有时我们需要将应用打包, 并将所有依赖的包全部打一入大的jar包中.
有很多工具可以这样做, 另外当我们的应用中有使用spring时, 在spring的配置文件中一般会声明一下Spring Schema,在使用其它打包工具将所有依赖包打入一个大包中在运行时,会报 "Can't Find Beans Schema" 的错误, 下面的这种做法可以避免这样的问题出现:
使用maven shade plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.3.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <finalName>${project.artifactId}-${project.version}-final</finalName> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>jar-with-dependencies</shadedClassifierName> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.eifesun.platform.application.ApplicationLauncher</mainClass> </transformer> <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> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.tooling</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
特别要注意:
META-INF/spring.handlers
META-INF/spring.schemas
META-INF/spring.tooling
不要遗漏了,不然就会报"Can't Find Beans Schema"的错误.