maven打包,構建

1、mvn對於不同的jar包配置。Jar、War、Tar、Zip

jar包的pom.xml

<plugin>  

            <groupId>org.apache.maven.plugins</groupId>  

            <artifactId>maven-jar-plugin</artifactId>  

            <version>2.4</version>           

            <configuration>  <!-- 插件配置 -->

                  <archive>  <!-- 存檔配置 -->     

                    <addMavenDescriptor>false</addMavenDescriptor><!--生成的jar中,不要包含pom.xmlpom.properties這兩個文件,true表示包含 -->    

                    <manifest>  <!-- 具體配置 -->                         

                        <addClasspath>true</addClasspath> <!--是否要把第三方jar放到manifestclasspath-->        

                        <classpathPrefix>lib/</classpathPrefix>  <!--生成的manifestclasspath的前綴,因爲要把第三方jar放到lib目錄下,所以classpath的前綴是lib/  -->

                        <!--應用的main class -->  

                        <mainClass>com.main.Hello</mainClass>  

                    </manifest>  

                </archive>                    

                <excludes>  <!--過濾掉不希望包含在jar中的文件-->

                    <exclude>${project.basedir}/xml/*</exclude>  

                </excludes>  

                   <includes>  <!--只包含在jar中的文件-->

                    <include>**/*.class</include>

                   </includes>

            </configuration>  

        </plugin>  


war包pom.xml

<plugin>  

            <groupId>org.apache.maven.plugins</groupId>  

            <artifactId>maven-war-plugin</artifactId>  

            <version>2.6</version>  

            <configuration>  

                <webResources>  

                    <resource><!--打包lib文件夾的jar-->  

                        <directory>${project.basedir}/lib</directory>  

                        <targetPath>WEB-INF/lib</targetPath>  

                        <filtering>false</filtering>  

                        <includes>  

                            <include>**/*.jar</include>  

                        </includes>  

                    </resource>  

                </webResources>  

                <archive>  

                    <addMavenDescriptor>false</addMavenDescriptor>  

                </archive>  

            </configuration>  

        </plugin>

打war包時,出現Error assembling WAR: webxml attributeis required需要創建/src/webapp/WEB-INF/web.xml文件。

war是對動態web工程的打包,jar是對java項目的打包


tar.gz使用assembly插件

<plugin>
                                <artifactId>maven-assembly-plugin</artifactId>
                                <version>2.3</version>
                                <executions>
                                        <execution>
                                                <id>make-assembly</id>
                                                <phase>package</phase>
                                                <goals>
                                                        <goal>single</goal>
                                                </goals>
                                        <configuration>
                                                <descriptors>
                                                        <descriptor>src/assembly/distribution.xml</descriptor>
                                                </descriptors>
                                        </configuration>
                                        </execution>
                                </executions>
                        </plugin>


distribution.xml如下:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
    xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2http://maven.apache.org/xsd/assembly-1.1.2.xsd">
        <id>release</id>
        <formats>
                <format>tar.gz</format>
        </formats>
        <includeBaseDirectory>false</includeBaseDirectory>
        <fileSets>
                <fileSet>
                        <directory>src/main/resources/bin</directory>
                        <outputDirectory>bin</outputDirectory>
                        <fileMode>0755</fileMode>
                </fileSet>
        </fileSets>
    <files>
        <file>
            <source>src/main/resources/content.properties</source>
            <outputDirectory>conf/content.properties</outputDirectory>
            <filtered>true</filtered>
        </file>
    </files>
        <dependencySets>
                <dependencySet>
                        <outputDirectory>lib</outputDirectory>
                </dependencySet>
        </dependencySets>
</assembly>

標籤<fileSets>中的<directory>src/main/resources/bin</directory>指明要對src/main/resources/bin文件夾操作,<outputDirectory>bin</outputDirectory>指明經過assembly插件打包後bin目錄會放置在項目根目錄下,

<fileMode>0755</fileMode>指明bin目錄下所有文件的權限爲755

assembly插件不僅可以對文件夾操作,同樣也可以對單獨文件操作。


mvn archetype:generate

創建maven項目

mvn package -Prelease

打包,並生成部署用的包

mvn eclipse:eclipse

生成eclipse項目文件

mvn eclipse:clean

清除eclipse項目文件

mvn site

生成項目相關信息的網站

mvn compile

編譯,將Java 源程序編譯成 class 字節碼文件

mvn test

測試,並生成測試報告

mvn clean

將以前編譯得到的舊的 class 字節碼文件刪除

mvn pakage

打包,動態 web工程打 war包,Java工程打 jar 包

mvn install

將項目生成 jar 包放在倉庫中,以便別的模塊調用



mvnarchetype:generate                創建項目

-DgroupId=com.mycompany.app           設置groupId=com.mycompany.app

-DarchetypeArtifactId=maven-archetype-quickstart創建項目maven插件maven-archetype-plugin中的原型標識名

-DinteractiveMode=false                            交互模式,默認爲true。我上面的cmd命令是一次性把該輸入的都輸入進去了,免去了交互所以是false。如果你選擇交互的話,就是有一步一步的選項指引你去選擇和填寫相關的標識之類的。

例2:mvn clean install -Dmaven.test.skip -Denv=release

-Dmaven.test.skip                             跳過測試

-Denv=release         使用-D傳遞環境變量,其中evn對應設置的<name>值,release對應<value>



發佈了27 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章