有時候我們想要做一些java 的小程序,需要把打包成jar,單獨執行,做一個maven項目,maven非常方便,有自動打包成jar的插件,但是有時候我們的項目可能會依賴其他的jar包,所以非常麻煩。
筆者最近遇到一個小問題,公司的工程有定時執行任務,有時候會出現不執行的情況或執行錯誤,所以需要些一個附加功能,可以人工手動執行。如果在頁面放按鈕重新執行一次,怕出現權限問題,寫webservice然后再寫外部的jar調用webservice,雖然很簡單,但是要在原來的項目上寫,寫完之后還要交給測試部測試,測試部測試之后還要領導審批,才能上線使用,所以決定寫一個外部的jar。
這是我的文件目錄,寫的一般,請諸君批評指正。
現在有點頭疼的是,成了一個jar,需要依賴很多外部的jar,在百度和自己嘗試之后,終於寫好了,pom配置中plugins如下:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.coamctech.historyreport.App</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <!-- The configuration of the plugin --> <configuration> <!-- Specifies the configuration file of the assembly plugin --> <descriptors> <descriptor>src/main/assembly/package.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins>
使用了assembly插件,引入他的配置文件:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>bin</id> <!-- 最終打包成一個用於發布的zip文件 --> <formats> <format>zip</format> </formats> <!-- Adds dependencies to zip package under lib directory --> <dependencySets> <dependencySet> <!-- 不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄 --> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>lib</outputDirectory> <unpack>false</unpack> </dependencySet> </dependencySets> <fileSets> <!-- 把項目相關的說明文件,打包進zip文件的根目錄 --> <fileSet> <directory>${project.basedir}</directory> <outputDirectory>/</outputDirectory> <includes> <include>README*</include> <include>LICENSE*</include> <include>NOTICE*</include> </includes> </fileSet> <!-- 把項目的配置文件,打包進zip文件的config目錄 --> <fileSet> <directory>${project.basedir}\src\main\resources</directory> <outputDirectory></outputDirectory> <includes> <include>*.xml</include> <include>*.properties</include> </includes> </fileSet> <!-- 把項目的腳本文件目錄( src/main/scripts )中的啟動腳本文件,打包進zip文件的跟目錄 --> <fileSet> <directory>${project.basedir}\src\main\bin</directory> <outputDirectory></outputDirectory> <includes> <include>startup.*</include> </includes> </fileSet> <!-- 把項目的腳本文件(除了啟動腳本文件),打包進zip文件的script目錄 --> <!-- <fileSet> <directory>${project.build.scriptSourceDirectory}</directory> <outputDirectory></outputDirectory> <excludes> <exclude>startup.*</exclude> </excludes> </fileSet> --> <!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 --> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory></outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> </fileSets> </assembly>
參考博客:
http://blog.csdn.net/WANGYAN9110/article/details/38646677/