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 打包 。

相關文章
相關標籤/搜索