有时候我们想要做一些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/

Maven项目打包jar依赖外部jar的更多相关文章

  1. 将Maven项目打包成可执行jar文件(引用第三方jar)

    方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build>     ...

  2. Maven项目打包成可执行Jar文件

    在使用Maven完成项目以后,如果需要打包成可执行的Jar文件,我们通过eclipse的导出很麻烦,还得指定入口文件的位置,还得说明依赖的jar包,既然都使用Maven了,很重要的一个目的就是让这些繁 ...

  3. 通过idea 打包 spring maven项目打包为可执行jar包

    用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...

  4. maven项目中 把依赖的jar包一起打包

    1.pom.xml 配置文件: 在pom.xml配置文件中添加 <build> <plugins> <plugin> <artifactId>maven ...

  5. 将Maven项目打包成可执行 jar文件(引用第三方jar)

    使用maven assembly插件完成打包 修改pom: <build> <pluginManagement> <plugins> <!--设置jdk版本, ...

  6. Eclipse里面的Maven项目如果下载依赖的jar包的源码

    Window---------Properties---------------Maven--------------勾选Download Artifact Sources和Download Arti ...

  7. eclipse下将maven项目打包为jar(1.不带第三方jar,2.带第三方jar)

    由于项目需要讲maven项目打包为jar包,由于之前没类似经验,百度找例子走了不少弯路,这边随手记录下,网上说的 开发工具:eclipse jar包管理:maven 一般打包出来的jar包分为两种 一 ...

  8. Maven项目打包,Jar包不更新的问题

    问题: 我的maven项目A要打成Jar包A,依赖了另外一个项目B生成的Jar包B.更改了项目B的代码,然后继续打包项目A,生成的Jar包A中并没有我修改了的代码. 原因: Jar包B在开始时被Ins ...

  9. 如何将maven项目打包成可执行的jar

    如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...

随机推荐

  1. Hibernate各种查询操作(二)

    一.QBC的查询方式 使用QBC不在需要写hql语句,而是使用criteria对象的各种方法来实现. 1.查询所有 //使用QBC方式查询所有 @Test public void test11(){ ...

  2. Signal Handling--ref

    http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_21.html A signal is a software interrupt d ...

  3. SSIS教程:创建简单的ETL包 -- 1. 创建项目和基本包

    在本课中,将创建一个简单 ETL 包,该包可以从单个平面文件(Flat File)源中提取数据,使用两个查找转换组件转换该数据,然后将该数据写入AdventureWorksDW2012 的 FactC ...

  4. 微信小程序wx:for循环

    最近做微信小程序碰到了一些问题,和wx:for循环相关,wx:for有很多用途,例如可以用于swiper中图片的循环,也就是所谓的轮播图,也可以用于其它的循环,可以大大地减少代码量. 但wx:for. ...

  5. 项目开发-->高级功能汇总

    祭奠曾经逝去的青春…… 1.高级功能汇总-->Memcached之ASP.NET实现 2.高级功能汇总-->HubbleDotNet软件安装

  6. redis的持久化方式

    redis有两种持久化方式,第一种是基于快照的持久化方式,第二种是基于文件追加的持久化方式 一.基于快照的持久化 1.修改redis.conf配置文件,开启基于快照的持久化方式 2.修改持久化文件存放 ...

  7. 5、springboot之修改端口号

    在resources中加入application.properties文件,里面加入 servier.port = 端口号 访问的时候,就用localhost:端口号 完事

  8. php explode时间分割

    <?php $str = "2017-02-27 13:40:42"; $first=explode(' ',$str); $second=explode('-', $fir ...

  9. CentOS 7运维管理笔记(1)----设置默认启动模式为GUI模式或命令行模式

    昨天在虚拟机中安装CentOS 7时选择了GNOME模式安装,开机默认进入GUI模式.网上搜找修改为默认命令行模式的方法,看到说修改 /etc/inittab文件,在最低下一行添加 但是 使用 cat ...

  10. Windows API-----top level window

    原文地址: http://blog.163.com/cumt_xl/blog/static/19071504420136911838683/ Q: What is a top-level window ...