zoukankan      html  css  js  c++  java
  • java中的Maven项目的两种打包方法

    个人觉得 第二种方法更好。

    基于Maven构建的项目的方法:

    一:

    将项目所支持的所有类库打在一个包中,而不是只将项目编译打包到一个jar中。这样便可以直接拷贝一个jar去执行了。

     

    Xml代码  收藏代码
    1. <plugin>  
    2.                 <artifactId>maven-assembly-plugin</artifactId>  
    3.                 <configuration>  
    4.                     <appendAssemblyId>false</appendAssemblyId>  
    5.                     <descriptorRefs>  
    6.                         <descriptorRef>jar-with-dependencies</descriptorRef>  
    7.                     </descriptorRefs>  
    8.                     <archive>  
    9.                         <manifest>  
    10.                             <mainClass>com.ebay.montage.eventprocessor.collector.CodeRollOutEventDataCollector</mainClass>  
    11.                         </manifest>  
    12.                     </archive>  
    13.                 </configuration>  
    14.                 <executions>  
    15.                     <execution>  
    16.                         <id>make-assembly</id>  
    17.                         <phase>package</phase>  
    18.                         <goals>  
    19.                             <goal>assembly</goal>  
    20.                         </goals>  
    21.                     </execution>  
    22.                 </executions>  
    23.             </plugin>  

     

    使用命令:

    mvn assembly:assembly -DskipTests

    这里就会在target目录下生成*.jar文件,

    直接运行jar文件: Java -jar *.jar

    备注:当然也可以使用mvn clean install -DskipTests 来构建生成jar包。

     

    注意绿色部分,自行定义内容。

     在 maven 工程中,我们也可以很方便的打包成可执行的 jar 包。默认Maven生成的JAR包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件:

     

    • JAR包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。
    • 项目所有的依赖都必须在Classpath中,其可以通过 MANIFEST.MF 指定或者隐式设置。

     

    Xml代码  收藏代码
    1. <plugins>  
    2.           <plugin>  
    3.                 <groupId>org.apache.maven.plugins</groupId>  
    4.                 <artifactId>maven-jar-plugin</artifactId>  
    5.                 <configuration>  
    6.                     <archive>  
    7.                         <manifest>  
    8.                             <addClasspath>true</addClasspath>  
    9.                             <classpathPrefix>lib/</classpathPrefix>  
    10.                             <mainClass>com.ebay.montage.eventprocessor.collector.MySpace</mainClass>  
    11.                         </manifest>  
    12.                         <manifestEntries>  
    13.                             <Class-Path>.</Class-Path>  
    14.                         </manifestEntries>  
    15.                     </archive>  
    16.   
    17.                     <finalName>eventprocessor</finalName>  
    18.                     <!-- <excludes>  
    19.                         <exclude>**/*.properties</exclude>  
    20.                         <exclude>**/*.xml</exclude>  
    21.                     </excludes> -->  
    22.                 </configuration>  
    23.             </plugin>  
    24.   
    25. <plugin>  
    26.                 <groupId>org.apache.maven.plugins</groupId>  
    27.                 <artifactId>maven-dependency-plugin</artifactId>  
    28.                 <executions>  
    29.                     <execution>  
    30.                         <id>copy-dependencies</id>  
    31.                         <phase>prepare-package</phase>  
    32.                         <goals>  
    33.                             <goal>copy-dependencies</goal>  
    34.                         </goals>  
    35.                         <configuration>  
    36.                             <outputDirectory>${project.build.directory}/lib</outputDirectory>  
    37.                             <overWriteReleases>false</overWriteReleases>  
    38.                             <overWriteSnapshots>false</overWriteSnapshots>  
    39.                             <overWriteIfNewer>true</overWriteIfNewer>  
    40.                         </configuration>  
    41.                     </execution>  
    42.                 </executions>  
    43.             </plugin>  
    44.     </plugins>  

     

    使用mvn clean install -DskipTests打jar 包。

     

     

    这样打好jar包后就可以使用:java -jar eventprocessor.jar Myspace, 

    当然了前提是在Myspace中有一个main方法。这样便可直接去执行Myspace中的main方法了。

    但是如果要将jar包放到别的机器上去运行的话,需要将targe中的lib下的内容(上面命令中指定)也同样拷贝过去,因为默认情况下:maven只是将项目编译打包到一个jar中,而其它的类库在上面手动的指定被放到了lib中,所以在执行的时候必须要引用才行

     


     

     

    附:如果对Maven感兴趣,如下文章的几个功能有必要了解一下:关于 Apache Maven 您不知道的 5 件事

    http://www.ibm.com/developerworks/cn/java/j-5things13/

  • 相关阅读:
    UVA 1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)
    UVA 1572 Self-Assembly(拓扑排序)
    最大流当前弧优化Dinic分层模板
    POJ 3683.Priest John's Busiest Day 2-SAT
    n的m划分 整数拆分问题
    表达式计算
    大白书中无向图的点双联通分量(BCC)模板的分析与理解
    Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分
    树状数组入门
    Tire树入门专题
  • 原文地址:https://www.cnblogs.com/zhangdebin/p/5567914.html
Copyright © 2011-2022 走看看