IDEA使用maven插件打jar包流程


idea使用maven插件打jar包步驟以及遇到的問題

  idea自帶了maven工具,idea右邊點擊maven選項:

  

一、在pom中添加插件,直接復制就好,如下選項

          <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>test.TestOperFile</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

注意:關於插件中這個地方需要注意一下:

這里分為兩種情況

  a.打包scala程序

    如果只是打包scala程序的話,這里代表的是主函數的方法名,一定是全路徑名(包名+類名)

    jar包運行方式:java -jar test.jar [參數1 參數2...]

  b.打包spark程序

    如果是打包spark程序的話,這里可以隨意,不影響,運行的時候需要指定類名即可

    jar包運行方式:

        spark-submit --class test.testOperator \
          --master yarn \
          --deploy-mode client \
          --driver-memory 3g \
          --executor-memory 2g  \
          --executor-cores 1 \
          --num-executors 4 \
          --jars /hadoop/datadir/deploy/lib/mysql-connector-java-5.1.7-bin.jar \
          --conf spark.sql.shuffle.partitions=100 \
          --conf spark.shuffle.sort.bypassMergeThreshold=5 \
          --conf spark.kryoserializer.buffer.max=128m \
          --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
          --conf spark.sql.parquet.compression.codec=snappy \
          --conf spark.shuffle.sort.bypassMergeThreshold=5 \
          --conf spark.locality.wait.node=6 \
          --conf spark.locality.wait.process=6 \
          test.jar [參數1,參數2...]

        運行參數可以根據自己的需求進行調整

二、開始打包(清空target目錄->編譯->打包),有時候也需要執行install進行發布到倉庫中,根據自己的需求

  

打包后的結果:

 

************************************************************************************************************************************************************* 

* 或者進行打包的時候后也可以直接打開idea底下的terminal,執行命令記性打包:mvn assembly:assembly

*************************************************************************************************************************************************************  

如果出現上圖所示,說明打包成功,此時找到右邊的target目錄,下面會有兩個包:

           

  然后執行的時候,我們只需要執行第二個包就可以了,也就是名字長的那個包:

三,jar包的執行:

  a.對於scala程序的jar包,因為main函數已經在pom中打包之前指定了,所以執行的時候如果有參數,只需要傳入相應的參數即可,用空格分開

    1、使用 "java -jar" 的方式提交:

    

    2、使用submit的方式提交程序

    

    可以看到,也可使用submit的方式進行提交,可以指定--class,也可以不指定

    b.對於spark程序的jar包,此時即使是在pom中指定了main函數,在提交的執行的時候必須按照spark程序的提交方式進行提交,即使用submit的方式,不能用 java -jar的方式提交,否則會報錯

    1、使用submit的方式提交程序:

     

    這樣提交運行之后是沒有什么問題的

    2、使用 "java -jar" 的方式提交:

      

    報錯,至於如何解決,本人暫時還沒有找到好的方案。希望能夠幫到需要的童鞋

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM