Maven -- 在MANIFEST中加入main信息

来源:互联网 发布:陈一发的淘宝店叫啥 编辑:程序博客网 时间:2024/05/16 07:23

使用maven-archetype-quickstart 1.1创建项目.在IDE运行时能够正常运行main启动项目,但进行打包后的jar包是无法直接运行的

$ java -jar maven-demo-01-0.0.1-SNAPSHOT.jarmaven-demo-01-0.0.1-SNAPSHOT.jar中没有主清单属性

因为带有main方法的类信息不会添加到manifest中
打开jar文件,在/META-INF/MANIFEST.MF.

Manifest-Version: 1.0Archiver-Version: Plexus ArchiverBuilt-By: YUCOANGCreated-By: Apache Maven 3.3.9Build-Jdk: 1.8.0_20

为了生成可执行的jar文件,需要借助maven-shade-plugin,配置信息如下
在pom.xml文件的节点下添加:

<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-shade-plugin</artifactId>    <version>1.2.1</version>    <executions>        <execution>            <phase>package</phase>            <goals>                <goal>shade</goal>            </goals>            <configuration>                <transformers>                    <transformer                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">                                                                                               <!-- main方法所在类 -->                        <mainClass>com.yucoang.maven_demo_01.App</mainClass>                    </transformer>                </transformers>            </configuration>        </execution>    </executions></plugin>

再次进行maven打包,target/目录将会生成
maven-demo-01-0.0.1-SNAPSHOT.jar
和original-maven-demo-01-0.0.1-SNAPSHOT.jar
maven-demo-01-0.0.1-SNAPSHOT.jar是带有mainClass信息的可运行jar.
original-maven-demo-01-0.0.1-SNAPSHOT.jar是原始jar
打开maven-demo-01-0.0.1-SNAPSHOT.jar/META-INF/MANIFEST.MF

Manifest-Version: 1.0Archiver-Version: Plexus ArchiverBuilt-By: YUCOANGCreated-By: Apache Maven 3.3.9Build-Jdk: 1.8.0_20Main-Class: com.yucoang.maven_demo_01.App

运行

$ java -jar maven-demo-01-0.0.1-SNAPSHOT.jarHello World!
原创粉丝点击