maven(一)maven自帶的插件


關於org.apache.maven.plugins

前言

maven提供了很多插件給我們使用,解釋3個java環境常用的maven插件, maven-jar-plugin, maven-complier-plugin, maven-assembly-plugin.

 

maven-jar-plugin

Maven提供的打jar包的插件,有點類似idea自帶的jar打包工具。

Maven-jar-plugin可以自定義主類,從而打成一個可執行的jar

例子

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <archive>
            <manifest>
                <!--不聲明主類會無法運行-->
                <mainClass>com.xxx.Main</mainClass>

<!--添加依賴classpath配置到MANIFEST文件-->
                <addClasspath>true</addClasspath>
            </manifest>
            <!--可以添加key/value到生成的manifest-->
            <manifestEntries>
                <!--Class-Path是classpath關鍵字,這跟運行環境的依賴路徑有關-->
                <key1>value1</ key1>
            </manifestEntries>
        </archive>
        <!--這些不打進包-->
        <excludes>
            <exclude>config/*.*</exclude>
        </excludes>
    </configuration>
</plugin>

 

archive細節參考

http://maven.apache.org/shared/maven-archiver/index.html

其他可以自定義很多內容,比如選擇打包的內容,不打包的內容,自定義MANIFEST文件(可以通過JarFile.getManifest來獲取key/value),

 

MANIFEST文件內包含了jar的信息,包括版本,主類,classpath等

關於manifest文件說明

http://maven.apache.org/shared/maven-archiver/examples/manifest.html

 

maven-compiler-plugin

Maven提供的編譯java源碼的插件,比如指定編譯的jdk版本,編譯編碼(UTF-8)之類

例子

<plugin>
    <!--用於聲明編譯的相關配置,若不聲明,則maven采用默認的相關配置 本來處理,可能會出現問題-->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <!--聲明源代碼的jdk版本-->
        <source>1.8</source>
        <!--聲明生成目標的jdk版本-->
        <target>1.8</target>
        <!--聲明編譯文件的編碼-->
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

 

//compiler插件詳細資料

http://maven.apache.org/plugins/maven-compiler-plugin/

 

maven-assembly-plugin

Maven提供的自定義打包的插件,制作項目分發包,該分發包可能包含了項目的可執行文件、源代碼、readme、平台腳本等等。maven-assembly-plugin支持各種主流的格式如zip、tar.gz、jar和war等,具體打包哪些文件是高度可控的,例如用戶可以按文件級別的粒度、文件集級別的粒度、模塊級別的粒度、以及依賴級別的粒度控制打包,此外,包含和排除配置也是支持的。maven-assembly-plugin要求用戶使用一個名為assembly.xml的元數據文件來表述打包

 

1.pom.xml聲明部分簡單例子

<plugin>
    <!--可以不聲明groupId 因為groupId是默認的-->
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <!-- 官方說法 this is used for inheritance merges 感覺沒什么用...-->
            <id>make-assembly</id>
            <!-- 綁定到maven的package操作 生命周期階段上,也可以用綁定到install操作 -->
            <phase>package</phase>
            <goals>
                <!-- 和phase的package組合使用 -->
                <goal>single</goal>
            </goals>
            <configuration>
                <!--不在生成的壓縮包名稱中添加assemblyId(在描述文件定義的id)-->
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <!--自定義描述文件路徑-->
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
            </configuration>
        </execution>
    </executions>
</plugin>

 

2.assembly.xml描述部分

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <!--生成的包的名稱會添加此id,例如xxxx-package.zip-->
    <id>package</id>
    <formats>
        <!--支持常見的包格式,例如zip,tar,tar.gz,jar,war等-->
        <format>zip</format>
    </formats>
    <!--相當於壓縮包的目錄,默認是有的,(解壓后是平鋪還是有個目錄.)-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}\src\main\</directory>
            <includes>
                <include>sbin/*.sh</include>
            </includes>
            <!--換行符格式,windows是\r\n,unix是\n等-->
            <lineEnding>unix</lineEnding>
            <!--類似與unix的acl,read是4,write是2,execute是1;默認是0644-->
            <fileMode>0755</fileMode>
            <outputDirectory>/</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.basedir}\src\main\resources\</directory>
            <includes>
                <include>*.properties</include>
            </includes>
            <outputDirectory>/conf</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.directory}</directory>
            <includes>
                <include>*.jar</include>
            </includes>
            <outputDirectory>lib</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

 

//maven官網對assembly的解釋

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

 

//maven官方的插件庫總覽

http://maven.apache.org/plugins/index.html


免責聲明!

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



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