最近在改造底层一个utils项目的时候,再将lib工程转maven项目后,打包丢了相关依赖;
之前lib工程的时候是需要借助第三方fatjar的,现在转maven后相关依赖全部丢失;
基于当前工程已经被很多项目引用,这里谋求一个新的出路,希望用maven插件也能将相关依赖打包进去!
现在有两种办法:
首先需要一个启动类,类在启动的时候把相关的依赖都初始化进去
方法一:使用插件maven-shade-plugin
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <version>2.3</version>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer
- implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>util.Microseer</mainClass>
- </transformer>
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
这样打出来的包ToolHelper-0.0.1-SNAPSHOT.jar和original-ToolHelper-0.0.1-SNAPSHOT.jar
original-是原始包就是不含第三方jar的,另一个是含第三方jar的
方法二:使用插件maven-assembly-plugin
- <!-- Maven Assembly Plugin -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.4.1</version>
- <configuration>
- <!-- get all project dependencies -->
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <!-- MainClass in mainfest make a executable jar -->
- <archive>
- <manifest>
- <mainClass>util.Microseer</mainClass>
- </manifest>
- </archive>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <!-- bind to the packaging phase -->
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
这样打出来的包:ToolHelper-0.0.1-SNAPSHOT-jar-with-dependencies.jar和ToolHelper-0.0.1-SNAPSHOT.jar
jar-with-dependencies是包含第三方的jar,另一个是不含的!
最终效果:
联系客服