Maven打包含有Main方法jar並運行


    最近使用Kettle做定時數據抽取,因為Job更新或需求變更,修改Bug等種種原因,需要對重跑Job一般是針對每天的數據重跑一次。剛開始的做法是直接在自己的開發機器上重跑,這樣速度比較慢,因為這時候你的開發機相當於數據的中專站,這樣外網數據來回傳輸速度很慢重新集計一個月的數據可能要花半小時以上。因此就萌生了把集計程序打成jar直接放到服務器上去執行,這樣內網傳輸速度就快了很多。

   之前使用IDEA自帶的打包試了好幾次都不成功,后面搜了一下Maven發現更簡單。對應的POM文件如下:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>RunJob</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

其中<mainClass>RunJob</mainClass>填寫含有Main的class名,然后執行以下命令:

mvn assembly:assembly
//跳過測試 
mvn -Dmaven.test.skip=true  assembly:assembly

 

打包成功后會把所有依賴Jar的class打在一個jar包中。

使用以下命令運行jar,參數依次跟在后面,如果有的話:

java -jar BuildKettleJob-1.0.jar 

 


免責聲明!

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



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