zoukankan      html  css  js  c++  java
  • Maven常用插件整理

    maven内置变量

    ${basedir}表示项目根目录,即包含pom.xml文件的目录;
    
    ${version}表示项目版本;
    
    ${project.basedir}同${basedir};
    
    ${project.baseUri}表示项目文件地址;
    
    ${maven.build.timestamp}表示项目构件开始时间;
    
    ${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可自定义其格式,其类型可参考java.text.SimpleDateFormat。

     ${project.build.directory}表示主源码路径;

    
    

     ${project.build.sourceEncoding}表示主源码的编码格式;

    
    

     ${project.build.sourceDirectory}表示主源码路径;

    
    

     ${project.build.finalName}表示输出文件名称;

    
    

      ${project.version}表示项目版本,与${version}相同;

    
    
    • ${project.xxx} 当前pom文件的任意节点的内容
    • ${env.xxx} 获取系统环境变量。
    • ${settings.xxx} 指代了settings.xml中对应元素的值。
     

    1.maven-compiler-plugin

      设置maven编译的jdk版本,maven3默认用jdk1.5,maven2默认用jdk1.3

    <plugin>                                                                                                                                                                                                  
        <groupId>org.apache.maven.plugins</groupId>                                                                                               
        <artifactId>maven-compiler-plugin</artifactId>                                                                                            
        <version>3.1</version>                                                                                                                    
        <configuration>                                                                                                                                          
            <source>1.8</source> <!-- 源代码使用的JDK版本 -->                                                                                             
            <target>1.8</target> <!-- 需要生成的目标class文件的编译版本 -->                                                                                     
            <encoding>UTF-8</encoding><!-- 字符集编码 -->
            <skipTests>true</skipTests><!-- 跳过测试 -->                                                                                          
        </configuration>                                                                                                                          
    </plugin>

    2.maven-jar-plugin

    <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <classesDirectory>target/classes/</classesDirectory>
            <archive>
                <manifest>
                    <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                    <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                    <!--自动加载META-INF/spring目录下的所有Spring配置-->
                    <useUniqueVersions>false</useUniqueVersions>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                </manifest>
                <manifestEntries>
                    <Class-Path>.</Class-Path>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>

    3.maven-source-plugin

    打包源码

    注意:在多项目构建中,将source-plugin置于顶层或parent的pom中并不会发挥作用,必须置于具体项目的pom中。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
            <execution>
                <id>attach-sources</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    4.maven-resource-plugin

    说明:该插件处理项目的资源文件拷贝到输出目录。可以分别处理main resources 和 test resources。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
              <encoding>UTF-8</encoding>
         </configuration>
     </plugin>

    5.maven-dependency-plugin

    自动拷贝jar包到target目录

    <!-- 依赖插件 -->  
    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-dependency-plugin</artifactId>  
        <version>2.6</version>  
        <executions>  
            <execution>  
                <id>copy-dependencies</id>  
                <phase>compile</phase>  
                <goals>  
                    <goal>copy-dependencies</goal>  
                </goals>  
                <configuration>  
                    <!-- ${project.build.directory}为Maven内置变量,缺省为target -->  
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>  
                    <!-- 表示是否不包含间接依赖的包 -->  
                    <excludeTransitive>false</excludeTransitive>  
                    <!-- 表示复制的jar文件去掉版本信息 -->  
                    <stripVersion>true</stripVersion>  
                </configuration>  
            </execution>  
        </executions>  
    </plugin>  

    6.maven-assembly-plugin

    该插件允许用户整合项目的输出,包括依赖,模块,网站文档和其他文档到一个单独的文档,即可用定制化打包。

    创建的文档格式包括:zip, tar, tar.gz(tgz), gar.bz2(tbgz2), jar, dir,war 等等。四种预定义的描述器可用:bin, jar-with-dependencies, src, project.

    
    
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                <phase>package</phase> <!-- bind to the packaging phase -->
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>bin</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>README*</include>
            <include>LICENSE*</include>
            <include>NOTICE*</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
            <include>*.jar</include>
          </includes>
        </fileSet>
        <fileSet>
          <directory>${project.build.directory}/site</directory>
          <outputDirectory>docs</outputDirectory>
        </fileSet>
      </fileSets>
    </assembly>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <!-- TODO: a jarjar format would be better -->
      <id>jar-with-dependencies</id>
      <formats>
        <format>jar</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
        <dependencySet>
          <outputDirectory>/</outputDirectory>
          <useProjectArtifact>true</useProjectArtifact>
          <unpack>true</unpack>
          <scope>runtime</scope>
        </dependencySet>
      </dependencySets>
    </assembly>
    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>src</id>
      <formats>
        <format>tar.gz</format>
        <format>tar.bz2</format>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.basedir}</directory>
          <includes>
            <include>README*</include>
            <include>LICENSE*</include>
            <include>NOTICE*</include>
            <include>pom.xml</include>
          </includes>
          <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
        <fileSet>
          <directory>${project.basedir}/src</directory>
          <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
      </fileSets>
    </assembly>
  • 相关阅读:
    Apache JMeter 入门教程
    nacos 配置中心 & 服务发现 使用
    Apache Flink能用来做什么?
    使用etcd watch做服务发现
    服务的注册与发现(Consul、zookeeper、etcd、eureka、Nacos)
    四层、七层负载均衡的区别
    Apollo核心概念之“Namespace”
    Charles的原理、作用
    GIN框架中间件 C.NEXT() C.ABORT() C.SET() C.GET 跨中间件取值 GIN中间件中使用GOROUTINE
    gin内置验证器使用
  • 原文地址:https://www.cnblogs.com/april-chen/p/10414857.html
Copyright © 2011-2022 走看看