你的位置:首页 > Java教程

[Java教程]Maven项目打包jar依赖外部jar


 

有时候我们想要做一些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.</descriptor>         </descriptors>       </configuration>       <executions>         <execution>           <id>make-assembly</id>           <phase>package</phase>           <goals>             <goal>single</goal>           </goals>         </execution>       </executions>     </plugin>     </plugins>

 

 

使用了assembly插件,引入他的配置文件:

<assembly ="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"     ="http://www.w3.org/2001/     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>*.</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/