有时候我们想要做一些java 的小程序,需要把打包成jar,单独执行,做一个maven项目,maven非常方便,有自动打包成jar的插件,但是有时候我们的项目可能会依赖其他的jar包,所以非常麻烦。

笔者最近遇到一个小问题,公司的工程有定时执行任务,有时候会出现不执行的情况或执行错误,所以需要些一个附加功能,可以人工手动执行。如果在页面放按钮重新执行一次,怕出现权限问题,写webservice然后再写外部的jar调用webservice,虽然很简单,但是要在原来的项目上写,写完之后还要交给测试部测试,测试部测试之后还要领导审批,才能上线使用,所以决定写一个外部的jar。

这是我的文件目录,写的一般,请诸君批评指正。

Maven项目打包jar依赖外部jar-LMLPHP

现在有点头疼的是,成了一个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/

05-11 17:46