使用Mavne生成可以執行的jar檔案

FrankYou發表於2016-12-19

到目前為之,還沒有執行HelloWorld的專案,不要忘了HelloWorld類可是有一個main方法的。使用mvn clean install命令預設生成的jar 包是不能直接執行的。因為帶有main方法的類資訊不會新增到manifest中(開啟jar檔案中的META-INFO/MANIFEST.MF檔案,將無法看到Main-Class一行)。為了生成可以執行的jar檔案,需要藉助maven-shade-plugin,配置該外掛如下:

    <build>
        <plugins>
            <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">
                                    <mainClass>HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

plugin元素在POM中的相對位置在<project><build><plugins>下面。我們配置了mainClass為:HelloWorld,專案打包時會將該資訊放到MANIFEST中。現在執行mvn clean install,待構建完成後開啟target/目錄,可以看到hellow-world-1.0-SNAPSHOT.jar,這個jar檔案帶有Main-Class資訊的可執行jar,開啟hellow-world-1.0-SNAPSHOT.jar的META-INFO/MANIFEST.MF,可以看到它包含這一行資訊:

Main-Class: HelloWorld

現在在專案根目錄中執行該jar檔案:

java -jar hello-world-1.0-SNAPSHOT.jar

輸出:

Hello World!!

 

相關文章