一、版本清單
maven-jar-plugin 3.1.0 jdk 1.8
二、簡單使用
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.yh.maven</groupId> 6 <artifactId>maven-jar-plugin</artifactId> 7 <version>0.0.1-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>maven_jar_plugin</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <build> 18 <plugins> 19 <plugin> 20 <groupId>org.apache.maven.plugins</groupId> 21 <artifactId>maven-jar-plugin</artifactId> 22 <version>3.1.0</version> 23 <configuration> 24 <archive> 25 <manifest> 26 <!-- 指定入口函數 --> 27 <mainClass>com.yh.main.HelloMavenJar</mainClass> 28 <!-- 是否添加依賴的jar路徑配置 --> 29 <addClasspath>true</addClasspath> 30 <!-- 依賴的jar包存放位置,和生成的jar放在同一級目錄下 --> 31 <classpathPrefix>lib/</classpathPrefix> 32 </manifest> 33 </archive> 34 </configuration> 35 </plugin> 36 </plugins> 37 </build> 38 </project>
在我使用這個 jar 包的時候就需要在它同一級的創建一個lib目錄來存放,我自己 jar 包所需要的依賴啦。不然就會包找不到類錯誤。
三、includes和excludes
有時候我們想要有選擇的打包某些內容,就可以使用includes或excludes啦。
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.yh.maven</groupId> 6 <artifactId>maven-jar-plugin</artifactId> 7 <version>0.0.1-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>maven_jar_plugin</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <build> 18 <plugins> 19 <plugin> 20 <groupId>org.apache.maven.plugins</groupId> 21 <artifactId>maven-jar-plugin</artifactId> 22 <version>3.1.0</version> 23 <configuration> 24 <archive> 25 <manifest> 26 <!-- 指定入口函數 --> 27 <mainClass>com.yh.main.HelloMavenJar</mainClass> 28 <!-- 是否添加依賴的jar路徑配置 --> 29 <addClasspath>true</addClasspath> 30 <!-- 依賴的jar包存放未知,和生成的jar放在同一級目錄下 --> 31 <classpathPrefix>lib/</classpathPrefix> 32 </manifest> 33 </archive> 34 <!-- 不打包com.yh.excludes下面的所有類 --> 35 <excludes>com/yh/excludes/*</excludes> 36 </configuration> 37 </plugin> 38 </plugins> 39 </build> 40 </project> 41
特別注意:這里的includes和excludes是依據編譯后的的classes這個路徑來計算的。
看看我們向項目結構:
打包結果:
可以看到在這個包下並沒有打包進來Excludes這個類。