maven打包成jar文件與打包成tar.gz文件

1、普通main方法入口的jar程序打包 maven-jar-plugin插件與maven-jar-plugin插件
用到maven-jar-plugin插件與maven-jar-plugin插件,打包完的jar文件所依賴包沒有導包到jar文件中,管理不方便java

打包命令: apache

maven  -packageapp

搭建過程:
一、目錄結構:eclipse

 

 

 

二、Pox.xml配置:maven


<build>
<finalName>bigdata11</finalName><!--打包完成文件的名字-->
<plugins>
<plugin><!--maven-jar-plugin用於生成META-INF/MANIFEST.MF文件的部份內容 jar包-->
<groupId>org.apache.maven.plugins</groupId> <!--引入maven插件的groupId-->
<artifactId>maven-jar-plugin</artifactId> <!--引入maven插件的artifactId-->
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath><!--MANIFEST.MF 是否增長依賴包-->
<classpathPrefix>lib/</classpathPrefix><!--MANIFEST.MF文件 依賴包位置格式-->
<mainClass>proxy.demo.TestMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>ui

<plugin><!--maven-dependency-plugin插件用於將依賴包拷貝到<outputDirectory>${project.build.directory}/lib</outputDirectory>指定的位置,即lib目錄下-->
<groupId>org.apache.maven.plugins</groupId><!--將依賴包放到物理存儲外部 li-->
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>spa

此方式只能生成除依賴包以外的(本身寫的代碼)打包成jar文件,會在target目錄下生成jar包,並將依賴包拷貝到target/lib目錄下,目錄結構以下:.net

 

 

 

 

 

2、使用maven-assembly-plugin插件打包(與eclipse導出相似)插件

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
<configuration>
<!--依賴裝配 false:指的是,把依賴包跟java程序打包成一個jar文件內;true(默認):指的是,把依賴包單獨打包成一個jar文件-->
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!--此處指定main方法入口的class-->
<mainClass>wc.WordCountMain</mainClass>
</manifest>
</archive>
</configuration>3d

<executions>
<execution>
<!--表明執行插件 不寫executions,則打包命令變成:mvn package assembly:single-->
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
打包命令: 

maven  -package

3、maven 打包成tar.gz文件

一樣使用assembly插件:maven-jar-plugin   maven-assembly-plugin

綜述:

 

 

 

一、首先pom.xml文件添加插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<!-- false:生成的jar中,不要包含pom.xml和pom.properties這兩個文件-->
<addMavenDescriptor>true</addMavenDescriptor>
<manifest>
<!--true:是否要把第三方jar放到manifest的classpath中-->
<addClasspath>true</addClasspath>
<!--生成的manifest中classpath的前綴,由於要把第三方jar放到lib目錄下,因此classpath的前綴是lib/-->
<classpathPrefix>lib/</classpathPrefix>
<!--應用的main class-->
<mainClass>wc.WordCountMain</mainClass>
</manifest>
</archive>
<!--過濾掉不但願包含在jar中的文件-->
<excludes>
<exclude>${project.basedir}/xml/*</exclude>
</excludes>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId> maven-assembly-plugin </artifactId>
<version>2.5.5</version>
<configuration>
<descriptors>
<!-- 描述文件路徑 -->
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>wc.WordCountMain</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<!--名字任意 -->
<id>make-assembly</id>
<!-- 綁定到package生命週期階段上 -->
<phase>package</phase>
<goals>
<!-- 只運行一次 -->
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
二、描述文件(src\main\assemble\assembly.xml)

<assembly>
<id>release</id><!--名字 會附加在版本後面-->
<formats>
<format>tar.gz</format><!--打包格式-->
</formats>
<!--若是爲false,不會額外產生根目錄,不然,在tar.gz包中會產生以pom.xml中artifactId和version命名的根目錄-->
<includeBaseDirectory>true</includeBaseDirectory>
<!--是對依賴包的設置-->
<dependencySets>
<!--assembly中dependencySets的意思就是,將scope爲runtime的依賴包,放到AlarmReport/lib目錄下-->
<dependencySet>
<!--定義了是否解壓依賴包,若是爲true,會解壓出依賴包中的class文件,反之,則不進行解壓-->
<unpack>false</unpack>
<!--限定了對哪些依賴包進行操做;(依賴包scope的值是在pom.xml中定義的)-->
<scope>runtime</scope>
<!-- 依賴包在tar.gz包中相對於根目錄的路徑-->
<outputDirectory>lib</outputDirectory>
<!--依賴包中是否包含當前工程-->
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
<!--指定哪些文件包含在打出的tar.gz包中-->
<!--assembly中兩個fileSets的做用是,
將target/classes下的文件,打包到AlarmReport目錄;將startup.sh打包到AlarmReport/bin目錄-->
<fileSets>
<!-- 把項目相關的說明文件,打包進zip文件的根目錄 -->
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>README*</include>
<include>LICENSE*</include>
<include>NOTICE*</include>
</includes>
</fileSet>

<!-- 把項目的配置文件,打包進zip文件的config目錄 -->
<fileSet>
<directory>${project.basedir}\src\main\config</directory>
<outputDirectory>config</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.properties</include>
</includes>
</fileSet>

<!-- 把項目的腳本文件目錄( src/main/scripts )中的啓動腳本文件,打包進zip文件的跟目錄 -->
<fileSet>
<directory>${project.build.scriptSourceDirectory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>startup.*</include>
</includes>
</fileSet>

<!-- 把項目的腳本文件(除了啓動腳本文件),打包進zip文件的script目錄 -->
<fileSet>
<directory>${project.build.scriptSourceDirectory}</directory>
<outputDirectory></outputDirectory>
<includes>
<exclude>startup.*</exclude>
</includes>
</fileSet>

<!-- 把項目本身編譯出來的jar文件,打包進zip文件的根目錄 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSet> </fileSets></assembly>
打包命令: 

maven  -package

 

 

————————————————版權聲明:本文爲CSDN博主「七彩星雲」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/u012117339/article/details/79713204

相關文章
相關標籤/搜索