1、使用maven-assembly-plugin插件打包
1.1 代码
地址:https://gitee.com/xixingzhe2/learn/tree/master/jar-exe/test-demo
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.api.TestApi</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
代码
package com.api;
/**
* @author ybwei
* @Description
* @date 2021/7/9 16:32
**/
public class TestApi {
public static void main(String[] args) {
System.out.println("start");
for (String arg : args) {
System.out.println("param:"+arg);
}
System.out.println("end");
}
}
1.2 打包
mvn clean package
target目录
2021/07/10 15:53 2,312 test-demo-1.0-jar-with-dependencies.jar
2021/07/10 15:53 2,316 test-demo-1.0.jar
反编译test-demo-1.0-jar-with-dependencies.jar包
1.3 执行
1.3.1 java -jar
$ java -jar test-demo-1.0-jar-with-dependencies.jar
start
end
1.3.2 java -cp
对于java -cp就不需要指定Main-Class来指定入口。因为第一个参数就是你的jar包,第二个参数它会根据你的jar包找到第二个参数指定的TestApi类就指定了你的入口类,来输出aaa。
$ java -cp test-demo-1.0.jar com.api.TestApi
start
end
或
$ java -cp test-demo-1.0-jar-with-dependencies.jar com.api.TestApi
start
end
1.3.3 传入参数
$ java -cp test-demo-1.0.jar com.api.TestApi cc bb
start
param:cc
param:bb
end
cc,dd为main方法的参数可不填
2、加载文件
代码地址:https://gitee.com/xixingzhe2/learn/tree/master/jar-exe/test-config-demo
执行如下命令及信息打印
$java -cp test-config-demo-1.0.jar com.api.FileApi config.properties
start
加载文件:E:\jar-exe\test-config-demo\target\config.properties
[name, aa.bb]
end