maven打包成一個jar,加入所有依賴包


  沒有用spring框架,而是用最簡單的maven方法新建工程,打包成jar。會要經歷2個環節:

1、打包的jar要運行起來需要設置主類,否則java -jar跑不起來,報“no main manifest attribute”。需要使用maven-jar-plugin插件,配置主程序入口類:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.hisense.main.Main</mainClass>   //主程序入口類
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

 

2、默認打包的jar沒有把所依賴的jar一起打入,需要運行時制定lib目錄。如果想打出可獨立運行的jar,需要引入maven-shade-plugin或者maven-assembly-plugin插件,配置pom.xml文件:

  • shade插件:
    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.3</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <transformers>
                                    <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>util.Microseer</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

    此插件生成的origin-前綴的jar是原始jar,不帶以來jar的。

  • assembly插件:
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4.1</version>
                    <configuration>
                        <!-- get all project dependencies -->
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <!-- MainClass in mainfest make a executable jar -->
                        <archive>
                            <manifest>
                                <mainClass>util.Microseer</mainClass>
                            </manifest>
                        </archive>
     
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <!-- bind to the packaging phase -->
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

    此插件打出來的jar-with-dependencies才是是帶依賴jar的包,另外那個是原始jar。

    這兩種方式除了配置pom.xml之外,還需要在maven工程中配置Run Configurations。shade插件命令行為:shade:shade -f pom.xml,assembly插件命令行為:assembly:assembly -f pom.xml。雙擊運行該配置后得到對應的包。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM