maven打包插件:maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin详解
生活随笔
收集整理的這篇文章主要介紹了
maven打包插件:maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近開發的產品,我們是有四五個maven模塊,開發階段一直是在eclipse中運行的,然后快發版的時候,需要把這些項目打成jar包,通過命令去啟動,那首先就得把這些模塊項目打包,或者拷貝一些資源文件等等。
1.maven打包,首先在pom文件中加上build屬性,和dependencies是同級的:
2.maven-compiler-plugin,編譯插件,可能會用到的一些配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>3.maven-jar-plugin,打jar包的插件,把整個maven工程打成jar包,可能會用到的一些配置如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.4</version><configuration><archive><!-- 生成的jar中,包含pom.xml和pom.properties這兩個文件 --><addMavenDescriptor>true</addMavenDescriptor><!-- 生成MANIFEST.MF的設置 --><manifest><!--這個屬性特別關鍵,如果沒有這個屬性,有時候我們引用的包maven庫下面可能會有多個包,并且只有一個是正確的,其余的可能是帶時間戳的,此時會在classpath下面把那個帶時間戳的給添加上去,然后我們在依賴打包的時候,打的是正確的,所以兩頭會對不上,報錯。--><useUniqueVersions>false</useUniqueVersions><!-- 為依賴包添加路徑, 這些路徑會寫在MANIFEST文件的Class-Path下 --> <addClasspath>true</addClasspath><!-- 這個jar所依賴的jar包添加classPath的時候的前綴,如果這個jar本身和依賴包在同一級目錄,則不需要添加--><classpathPrefix>lib/</classpathPrefix><!-- jar啟動入口類--><mainClass>com.test.Test</mainClass></manifest><manifestEntries><!-- 在Class-Path下添加配置文件的路徑 --><Class-Path>../config/</Class-Path><!-- 假如這個項目可能要引入一些外部資源,但是你打包的時候并不想把這些資源文件打進包里面,這個時候你必須在這邊額外指定一些這些資源文件的路徑,這個位置指定的話,要根據你預期的這些位置去設置,我這邊所有jar都在lib下,資源文件都在config下,lib和config是同級的 --><!-- 同時還需要注意另外一個問題,假如你的pom文件里面配置了<scope>system</scope>,就是你依賴是你本地的資源,這個時候使用這個插件,classPath里面是不會添加,所以你得手動把這個依賴添加進這個地方,用空格隔開就行--></manifestEntries></archive><!-- jar包的位置--><outputDirectory>${project.build.directory}/lib</outputDirectory><includes><!-- 打jar包時,只打包class文件 --><!-- 有時候可能需要一些其他文件,這邊可以配置,包括剔除的文件等等--><include>**/*.class</include></includes></configuration> </plugin>4.maven-dependency-plugin,用來拷貝項目所有依賴的插件,可能會用到的一些配置如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!-- 拷貝項目依賴包到lib/目錄下 --><outputDirectory>${project.build.directory}/lib</outputDirectory><!-- 間接依賴也拷貝 --><excludeTransitive>false</excludeTransitive><!-- 帶上版本號 --><stripVersion>false</stripVersion></configuration></execution></executions> </plugin>5.maven-resources-plugin,用來拷貝項目中的一些資源文件,可能會用到的一些配置如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.6</version><executions><!-- 一個execution就是一個目標輸入位置,如果想把各種資源拆開放的話,就可以創建多個execution,一個資源文件可以被拷貝多份 --><execution><id>copy-resources</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><encoding>UTF-8</encoding><!-- 資源文件的輸出目錄 --><outputDirectory>{project.build.directory}/config</outputDirectory><resources><!-- 資源文件的原始目錄,有多個的話就多配幾個 --><resource><!-- 原始目錄 --><directory>src/main/resources</directory><!-- 是否使用過濾器,如果是的話,需要配置一下才行這個后續再研究,這邊沒有使用到 --><filtering>true</filtering><!-- 包含哪些文件以及去除調哪些文件等等 --><includes><include>**/*.*</include></includes><excludes><exclude>**/*.json</exclude></excludes></resource></resources></configuration></execution></executions> </plugin>以上就是這4個插件,后續如果還有其余插件或者這些插件中一些新內容,會及時添加。關于一些文件的輸出目錄,一定要根據自己的需求來,先明白自己想要什么,再去配置,或者兩者互相迭代吧。
總結
以上是生活随笔為你收集整理的maven打包插件:maven-compiler-plugin、maven-dependency-plugin、maven-jar-plugin、maven-resources-plugin详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客多校三 B Black and wh
- 下一篇: AtCoder Beginner Con