Storm Spark Scala 混合代码快速编译打包jar方式,而后java风格使用(朋友咨询)

                上一章 我讲了 Slope One 补充的一种数据推荐方式 ,虽然贴出了 不少代码 ,可是网友向我反映 他不会scala 问我 那些打包 怎么实现 。我这里 就补充一下  经常使用的一些打包的方式。 我使用的是Maven方式 ,至于大家是gradle 也是同样的,换汤不换药java

            1.Storm 打包方式 jar apache

                storm jar xxxxx.jar 提交 时候须要一个全依赖的jar 若是有时候storm lib自带了就不须要了 不过我建议 使用全依赖的jar 把全部的依赖打到jar中去 这样 不会出问题。网络

              首先 配置插件eclipse

            在pom文件中配置 assembly 打包插件 maven

<plugin>  
                <artifactId>maven-assembly-plugin</artifactId>  
                <configuration>  
                    <archive>  
                        <manifest>  
                            <mainClass>com.zsuper.RealEffectTopologyMain</mainClass>  
                        </manifest>  
                    </archive>  
                    <descriptorRefs>  
                        <descriptorRef>jar-with-dependencies</descriptorRef>  
                    </descriptorRefs>  
                </configuration>  
            </plugin>

  

com.zsuper.RealEffectTopologyMain 这是配置jar 运行的main主入口

   

下面运行 编辑器

      

mvn assembly:assembly

     其实 我开发时候 用的编辑器 是myeclipse 以及 idea  都用 其实都有各自的优势 ,我通常 喜欢两个切换的用。 感受都很棒,idea 强大 在debug 调试 自动提示方面 。myeclipse 强大在于 能够优雅的对比 项目管理方面ide

    这里就贴idea的截图吧gradle

      记不住 assembly:assembly 也没事 idea 会显示插件的命令 邮件运行 就能够了
idea

    

      运行打包后 就会生产 一个 依赖打入的jar 一个 没有打入依赖的jar 通常 用依赖打入的jar 这样不会出问题,不过有些依赖都有的环境 就用 没有打入依赖的jar包spa

  

        2.Spark 纯粹jar的打包 ,能够直接使用上面的也能够。也可使用下面的。

        不过我这里补充一种方式,比上面的assembly 插件更加灵活的方式

        就是apache shade 插件 使用方式 同样的 shade:shade 重复的名字

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-shade-plugin</artifactId>
   <configuration>
      <shadedArtifactAttached>false</shadedArtifactAttached>
      
   </configuration>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>shade</goal>
         </goals>
      </execution>
   </executions>
</plugin>

  

     3.Spark 中 含有scala java 混合代码的打包jar 

              首先pom中引入scala编译打包的jar

              为何 要使用它呢。,1.不须要配置sbt 以及 sbt lancher 2,不要下下载安装scala环境 以及各种版本问题  3.能够方便调试使用scala

              就是引入         scala maven 插件 

             这里 贴出几个很重要的 命令 ,很方便 用来 下载网络上spark的scala写的包 而后调试 打包 

    是否是比sbt 要简单啊

       

         下面贴出完整代码 :

<plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <compilerVersion>1.7</compilerVersion>
                            <source>1.7</source>
                            <target>1.7</target>
                            <encoding>UTF-8</encoding>
                        </configuration>
                   </execution>
                </executions>
            </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <configuration>
          <shadedArtifactAttached>false</shadedArtifactAttached>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>


  而后执行mvn package 便可,由于咱们 goal生命周期 package 加入了shade 里面了 ,因此会执行compile 编译java 以及 scala 而后使用shade 打包 。

相关文章
相关标签/搜索