maven pom 配置 学习笔记(五)之 maven-jar-plugin

    maven-jar-plugin 这个插件通常用法是将maven工程打成 jar 包,但是还有其它用法。

1、生成可执行 jar 包

 <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                         <!--是否要把第三方jar放到manifest的classpath中-->
                        <addClasspath>true</addClasspath>
                         <!--生成的manifest中classpath的前缀,
                          因为要把第三方jar放到lib目录下,
                         所以classpath的前缀是lib/-->
                        <classpathPrefix>lib/</classpathPrefix>
                          <!-- 执行的主程序路径 -->
                        <mainClass>com.example.demo.test.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

打包出来的包的数据结构如下:

 打开 MENIFEST.MF 文件可以看到如下内容:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: sandy
Class-Path: lib/gson-2.8.5.jar lib/guava-19.0.jar lib/slf4j-api-1.7.25
 .jar lib/logback-core-1.2.3.jar lib/logback-access-1.2.3.jar lib/logb
 ack-classic-1.2.3.jar lib/lombok-1.18.2.jar lib/commons-lang3-3.8.1.j
 ar lib/commons-io-2.2.jar     //表示依赖的第三方jar包在哪里,显然需要放在和 当前jar包同级目录下的 lib文件夹下
Created-By: Apache Maven 3.5.2
Build-Jdk: 1.8.0_121
Main-Class: com.example.demo.test.App  //表示运行的主程序

所以安装包的路径结构应该是:

 为此需要 通过  maven-assembly-plugin 插件来组装出安装包。

针对本示例 对应的 maven-assembly-plugin 配置如下:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                 <descriptors>  
                        <descriptor>assembly.xml</descriptor>   //和 pom.xml 同级目录下
                     </descriptors>
                    <outputDirectory>output</outputDirectory>    //和 pom.xml同级目录下,assembly 组装出来的包会被放置在output目录下
            </configuration>
        </plugin>
assembly.xml 内容如下:
<?xml version='1.0' encoding='UTF-8'?> 
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <id>consul-consumer-demo</id>
    <formats> 
        <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
        <fileSet> 
            <directory>${project.build.directory}</directory> //${project.build.directory} 指 target目录
            <outputDirectory>/</outputDirectory>   //表示输出到 pom 中配置的 output目录下
            <includes>
               <include>consul-product.jar</include>
            </includes>
        </fileSet> 
        <fileSet> 
            <directory>${project.build.directory}/classes</directory> 
            <outputDirectory>/config</outputDirectory>   //表示输出到 pom 中配置的 output/config 目录下
           <includes>
               <include>application.properties</include>
            </includes> 
        </fileSet> 
        <fileSet> 
            <directory>${project.basedir}</directory> //${project.basedir} 指 工程根目录
            <outputDirectory>/</outputDirectory> 
            <includes>
               <include>script/*.*</include>
            </includes> 
        </fileSet>
    </fileSets> 
</assembly>

2、打出来的 jar 包可以指定 jar名称

    在不指定jar包名称的时候,通常见的jar包名称是:artifactId-version.jar

要自定义 jar 包名称,可以直接在 pom.xml 中 build 结点下设置 finalName,如:

<build>
      <finalName>p-test-tool</finalName>
</build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven插件是一种可插拔的工具,可以在Maven构建过程中执行特定的任务。其中,maven-dependency-pluginmaven-surefire-plugin是两个常用的插件。 maven-dependency-plugin插件可以用来管理项目依赖,可以帮助我们列出项目中的依赖关系,复制依赖文件到指定目录,解压依赖文件等。常用的配置包括: - list:列出项目依赖 - copy-dependencies:将所有依赖文件复制到指定目录 - unpack:解压指定的依赖文件 maven-surefire-plugin插件则是用来执行项目的单元测试的。它可以在Maven构建过程中自动执行单元测试,并生成测试报告。常用的配置包括: - includes/excludes:指定要执行的测试类或排除的测试类 - parallel:指定测试是否并行执行 - reportsDirectory:指定测试报告生成的目录 在POM文件中配置这两个插件,可以通过以下方式: ``` <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <includes> <include>**/*Test.java</include> </includes> <parallel>methods</parallel> <threadCount>10</threadCount> <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> </configuration> </plugin> </plugins> </build> ``` 以上是一个简单的POM文件中Maven插件配置maven-dependency-pluginmaven-surefire-plugin的示例,其中maven-dependency-plugin在package阶段执行复制依赖文件的任务,maven-surefire-plugin在test阶段执行单元测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值