具体代码如下所示;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<!-- 第一种打包方式 (maven-jar-plugin), 将依赖包和配置文件放到jar包外 --> <build> <sourcedirectory>src/main/java</sourcedirectory> <resources> <resource> <directory>src/main/resources</directory> <!-- 将<directory>目录下的文件打包到<targetpath>下 --> <targetpath>${project.build.directory}</targetpath> <excludes> <exclude>** /*.java</exclude> </excludes> </resource> </resources> <testsourcedirectory>src/test/java</testsourcedirectory> <testresources> <testresource> <directory>src/test/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/ *.java</exclude> </excludes> </testresource> </testresources> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version> 2.3 . 2 </version> <configuration> <source> 1.8 </source> <target> 1.8 </target> <encoding>utf- 8 </encoding> </configuration> </plugin> <!-- 将项目依赖包复制到<outputdirectory>指定的目录下 --> <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> <outputdirectory> ${project.build.directory}/lib </outputdirectory> </configuration> </execution> </executions> </plugin> <!-- 将项目依赖包的路径(与上一项中的<outputdirectory>对应)添加到classpath中 --> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-jar-plugin</artifactid> <configuration> <archive> <manifest> <addclasspath> true </addclasspath> <classpathprefix>lib/</classpathprefix> <mainclass>com.ctbri.echorisk.applicationstart</mainclass> </manifest> <manifestentries> < class -path>./</ class -path> </manifestentries> </archive> </configuration> </plugin> </plugins> </build> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<!-- 第二种打包方式 (maven-shade-plugin), 将依赖包和配置文件放到jar包内 --> <build> <directory>${project.basedir}/target</directory> <finalname>${project.artifactid}-${project.version}</finalname> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version> 2.21 . 0 </version> <configuration> <skiptests> true </skiptests> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version> 2.3 . 2 </version> <configuration> <source> 1.8 </source> <target> 1.8 </target> <encoding>utf- 8 </encoding> <compilerarguments> <extdirs>${project.basedir}/lib/</extdirs> </compilerarguments> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-shade-plugin</artifactid> <version> 3.1 . 0 </version> <executions> <execution> <phase> package </phase> <goals> <goal>shade</goal> </goals> <configuration> <minimizejar> true </minimizejar> <filters> <filter> <artifact>*:*</artifact> </filter> </filters> <transformers> <!-- 往manifest文件中写入main- class 是可执行包的必要条件。manifestresourcetransformer可以轻松实现。 --> <transformer implementation= "org.apache.maven.plugins.shade.resource.manifestresourcetransformer" > <mainclass>com.ctbri.echorisk.applicationstart</mainclass> </transformer> <!-- appendingtransformer 用来处理多个jar包中存在重名的配置文件的合并,尤其是spring --> <transformer implementation= "org.apache.maven.plugins.shade.resource.appendingtransformer" > <resource>meta-inf/spring.handlers</resource> </transformer> <transformer implementation= "org.apache.maven.plugins.shade.resource.appendingtransformer" > <resource>meta-inf/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<!-- 第三种打包方式 (maven-assembly-plugin) --> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version> 2.21 . 0 </version> <configuration> <skiptests> true </skiptests> </configuration> </plugin> <plugin> <artifactid>maven-compiler-plugin</artifactid> <version> 2.3 . 2 </version> <configuration> <source> 1.8 </source> <target> 1.8 </target> <encoding>utf- 8 </encoding> <compilerarguments> <extdirs>${project.basedir}/lib/</extdirs> </compilerarguments> </configuration> </plugin> <plugin> <artifactid>maven-assembly-plugin</artifactid> <configuration> <descriptorrefs> <descriptorref>jar-with-dependencies</descriptorref> </descriptorrefs> <archive> <manifest> <mainclass>com.ctbri.echorisk.applicationstart</mainclass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase> package </phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> |
总结
以上所述是小编给大家介绍的java中maven项目导出jar包配置的示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:https://www.cnblogs.com/strugglion/archive/2018/11/26/10020218.html