一、版本清单
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这个类。