前言
参考资料:
实战(九)——打包的技巧
java app可执行打包
使用的是:
maven-shade-plugin
这个插件,demo程序为:
其中,pom文件为:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.funfunle.test</groupId>
<artifactId>test_shade_1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<!--基础类库-->
<dependency>
<!--Group net.funfunle-->
<!--Name baselib-->
<groupId>net.funfunle</groupId>
<artifactId>baselib</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--基础类库 end-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.funfunle.test.t333</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
主要的入口类为:
package org.funfunle.test;
import net.funfunle.common.WebTools;
public class t333 {
public static void main(String[] args){
String tstr="dfdfdfdf";
tstr=WebTools.cutStr(tstr,4,"...");
System.out.println("结果是:"+tstr);
}
}
特意引入了外部的一个基础类库,然后进行打包:
多了一个original的原始打包文件及正式的jar可执行文件,打开来看看内容:
可以发现将其他class都搬过来了,
执行以下:
执行成功。
java web打包 war
pom设置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.funfunle.test</groupId>
<artifactId>test_normal_web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<!--
Exclude JCL and LOG4J since all logging should go through SLF4J.
Note that we're excluding log4j-<version>.jar but keeping
log4j-over-slf4j-<version>.jar
-->
<webXml>web\WEB-INF\web.xml</webXml>
<packagingExcludes>
WEB-INF/lib/commons-logging-*.jar,
%regex[WEB-INF/lib/log4j-(?!over-slf4j).*.jar]
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
</project>