maven導出runnable jar


結論:不要使用export導出maven的工程,而是使用assemable plugin。

 

 

1 一個標准的java工程導成runnable jar

1.1 首先需要在工程里對應的入口類,執行一次main方法,從而讓eclispe記錄lanuncher。否則在導出jar的時候,找不到launch。下面是main執行完后,在相應的Java Application里面配置launch的名稱等。

1.2 選擇export | runnable JAR file |   選中工程對應的launch, 導出jar,依賴的jar導出策略(通常選2)

1.3,導出的工程結構最簡單的是將配置文件放到src目錄下,這樣導出后就直接位於classpath。如果放在了不在/src的其它目錄下,需要在將該目錄添加為src目錄,這樣編譯之后,里面的文件才能位於classpath.

 

 

2.maven導出runnable jar

 

2.1 maven錯誤的通過export導出runnable jar.

如果maven工程也使用export jar,導出后會發現main/resources/*.*都不會位於classpath下。這與標准的java工程在指定源目錄之后,編譯的內容會位於classpath不同。所以直接使用maven的插件assemble在compile之后,導出jar。

驗證1.

驗證2: export確實可以把maven依賴的dependency導出。Libraries里面顯示指定依賴的jar。

驗證3:導出的jar的結構。可以看到應用程序讀取的配置文件都位於了classpath:resouces/file而不是classpath:file。

 

2.2 maven正確的導出runnable jar 

2.2.1在pom.xml里面添加如下配置

                <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.daodao.tool.migrate.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>


2.2.2 新建一個goal:clean compile assembly:single, 注意,如果命令行執行,需要前面加mvn。

 

2.2.3. 將會嚴格的按照pom.xml里面的依賴打成jar。包括exlude的jar也會剔除。

 

附:m2eclipse中如何判斷jar沖突並排除。

右側的Resolved Dependency就是分析依賴后的最終依賴的jar。發現spring-beans,spring-core使用的是spring2.0.6的版本。與spring2.5.6沖突。(myeclipse的工具可以圖形化這些沖突並標記,更加方便。)

 此時可以右健這二個jar選中Exclude  Maven Artificat .....即可修改相應的pom.xml。

 

 

 
 
 
 


免責聲明!

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



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