zoukankan      html  css  js  c++  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.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}srcmain
    esources</directory>
    
                <outputDirectory></outputDirectory>
    
                <includes>
    
                    <include>*.xml</include>
    
                    <include>*.properties</include>
    
                </includes>
    
            </fileSet>
    
           
    
            <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
    
            <fileSet>
    
                <directory>${project.basedir}srcmainin</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/

     

  • 相关阅读:
    Ubuntu下iperf的安装
    frp内网穿透协助内网程序(如微信相关)开发
    Uncaught Error: Call to undefined function mcrypt_get_iv_size() 解决办法
    CentOS安装了iRedMail停用Amavisd + ClamAV + SpamAssassin
    申请Let’s Encrypt通配符HTTPS证书(certbot ACME v2版)
    关于ThinkPHP在Nginx服务器下因PATH_INFO出错的解决方法
    本地开发环境伪装成SSL连接的实现
    Web基础之日志
    Linux基础之防火墙
    面向接口及单例工厂随笔
  • 原文地址:https://www.cnblogs.com/roychenyi/p/5604470.html
Copyright © 2011-2022 走看看