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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM