maven將所有依賴(lài)和scala源碼編譯后的結(jié)果打包成一個(gè)jar
參考網(wǎng)址?
https://www.jianshu.com/p/dcfdbccdd219
https://blog.csdn.net/u014163312/article/details/127330574
https://blog.csdn.net/u014163312/article/details/104854590
如果不修改maven的配置文件,無(wú)法將用到的依賴(lài)打包到j(luò)ar包里,每次在服務(wù)器上運(yùn)行jar包都需要下載。
通過(guò)maven-jar-plugin方式打包成可執(zhí)行jar文件,但是這種方式會(huì)將所有依賴(lài)(包括外部依賴(lài))單獨(dú)打包到另外一個(gè)指定文件夾下,需要通過(guò)指定Class-Path的方式關(guān)聯(lián)
<plugin>
? ? <groupId>org.apache.maven.plugins</groupId>
? ? <artifactId>maven-dependency-plugin</artifactId>
? ? <version>當(dāng)前maven-dependency-plugin版本號(hào)</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>
在pom文件中添加
<build>
?<plugins>
? ?<!--打包成一個(gè)jar的plugin-->
? ?<plugin>
? ? ?<groupId>org.apache.maven.plugins</groupId>
? ? ?<artifactId>maven-jar-plugin</artifactId>
? ? ?<version>2.4</version>
? ? ?<configuration>
? ? ? ?<archive>
? ? ? ? ?<manifest>
? ? ? ? ? ?<!--運(yùn)行jar包時(shí)運(yùn)行的主類(lèi),要求類(lèi)全名-->
? ? ? ? ? ?<mainClass>cn.ac.iie.DataAnalysis</mainClass>
? ? ? ? ? ?<!-- 是否指定項(xiàng)目classpath下的依賴(lài) -->
? ? ? ? ? ?<addClasspath>true</addClasspath>
? ? ? ? ? ?<!-- 指定依賴(lài)的時(shí)候聲明前綴 -->
? ? ? ? ? ?<classpathPrefix>./lib/</classpathPrefix>
? ? ? ? ? ?<!--依賴(lài)是否使用帶有時(shí)間戳的唯一版本號(hào),如:xxx-1.3.0-20121225.012733.jar-->
? ? ? ? ? ?<useUniqueVersions>false</useUniqueVersions>
? ? ? ? ?</manifest>
? ? ? ?</archive>
? ? ?</configuration>
? ?</plugin>
? ?<!--把當(dāng)前項(xiàng)目所有的依賴(lài)打包到target目錄下的lib文件夾下-->
? ?<plugin>
? ? ?<groupId>org.apache.maven.plugins</groupId>
? ? ?<artifactId>maven-dependency-plugin</artifactId>
? ? ?<version>3.1.2</version>
? ? ?<executions>
? ? ? ?<execution>
? ? ? ? ?<id>copy</id>
? ? ? ? ?<phase>package</phase>
? ? ? ? ?<goals>
? ? ? ? ? ?<goal>copy-dependencies</goal>
? ? ? ? ?</goals>
? ? ? ? ?<configuration>
? ? ? ? ? ?<outputDirectory>${project.build.directory}/lib</outputDirectory>
? ? ? ? ? ?<!--已存在的Release版本不重復(fù)copy-->
? ? ? ? ? ?<overWriteReleases>false</overWriteReleases>
? ? ? ? ? ?<!--已存在的SnapShot版本不重復(fù)copy-->
? ? ? ? ? ?<overWriteSnapshots>false</overWriteSnapshots>
? ? ? ? ? ?<!--不存在或者有更新版本的依賴(lài)才copy-->
? ? ? ? ? ?<overWriteIfNewer>true</overWriteIfNewer>
? ? ? ? ?</configuration>
? ? ? ?</execution>
? ? ?</executions>
? ?</plugin>
此后 view--tool windows--maven--package 打包

在target目錄下:可以運(yùn)行scala程序編譯打包好的jar包(Spark-5GCData...-1.0-SNAP...),其中l(wèi)ib中包含了程序需要的所有依賴(lài)的jar包


上述方法無(wú)法將整個(gè)工程打成一個(gè)可執(zhí)行jar包,
如果想將工程打包成一個(gè)包含所有的依賴(lài)的可執(zhí)行jar包
需要通過(guò)maven-assembly-plugin
插件來(lái)打包,可以實(shí)現(xiàn)該需求。
<build>
?<plugins>
? ?<plugin>
? ? ?<artifactId>maven-compiler-plugin</artifactId>
? ? ?<version>3.1</version>
? ? ?<configuration>
? ? ? ?<source>1.8</source>
? ? ? ?<target>1.8</target>
? ? ?</configuration>
? ?</plugin>
? ?<plugin>
? ? ?<groupId>org.apache.maven.plugins</groupId>
? ? ?<artifactId>maven-assembly-plugin</artifactId>
? ? ?<version>3.4.0</version>
? ? ?<configuration>
? ? ? ?<descriptorRefs>
? ? ? ? ?<descriptorRef>jar-with-dependencies</descriptorRef>
? ? ? ?</descriptorRefs>
? ? ? ?<archive>
? ? ? ? ?<manifest>
? ? ? ? ? ?<mainClass>cn.ac.iie.DataAnalysis</mainClass>
? ? ? ? ?</manifest>
? ? ? ?</archive>
? ? ?</configuration>
? ? ?<executions>
? ? ? ?<execution>
? ? ? ? ?<id>make-assembly</id>
? ? ? ? ?<phase>package</phase>
? ? ? ? ?<goals>
? ? ? ? ? ?<goal>single</goal>
? ? ? ? ?</goals>
? ? ? ?</execution>
? ? ?</executions>
? ?</plugin>
注意:要添加<groupId>org.apache.maven.plugins</groupId>(因?yàn)楸镜貍}(cāng)庫(kù)中的文件夾目錄結(jié)構(gòu):setting文件中指定的本機(jī)的maven-repository\org\apache\maven\plugins\maven-assembly-plugin\3.4.0)
在項(xiàng)目文件夾的路徑處輸入cmd
先輸入mvn clean清空之前打包的項(xiàng)目jar包(重要?。?/strong>
使用mvn?assembly:assembly -Dmaven.test.skip打包
如果打包的時(shí)候報(bào)錯(cuò):Could not find goal ‘a(chǎn)ssembly’ in plugin org.apache.maven.plugins:maven-assembly-plugin: among available goals help, single
點(diǎn)擊maven的plugin -- assembly:single打包即可,無(wú)需使用命令行

打包包含依賴(lài)的jar成功?。?!如下
