• 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>
  • 相关阅读:
    js实现字符串反转
    网页中嵌入百度地图
    Javascript创建对象方法
    使用@font-face来实现icon
    关于课程实验的反思
    Factory设计模式构建
    正则表达式的应用
    IO流
    解读main()方法中的String[] args
    技术与运营
  • 原文地址:https://www.cnblogs.com/sandyflower/p/13685055.html
Copyright © 2020-2023  润新知