目录
1. maven打包后jar包中包含所有依赖,并且包含第三方依赖
- 思路:首先将第三方依赖安装到maven本地仓库,然后使用maven插件指定打包后包中必须包含所有的依赖。
1.1 安装第三方jar到maven本地仓库
mvn install:install-file -Dfile=D:\download\flink-1.9.3-bin-scala_2.11\flink-1.9.3\lib\flink-dist_2.11-1.9.3.jar -DgroupId=com.myflink -DartifactId=flink_dist -Dversion=v1.0 -Dpackaging=jar -DgeneratePom=true
可以使用-s
或--settings
指定使用maven的配置文件:
mvn install:install-file -Dfile=D:\lib\flink-dist_2.11-1.9.3.jar -DgroupId=com.myflink -DartifactId=flink_dist -Dversion=v1.0 -Dpackaging=jar -DgeneratePom=true -s D:\soft\maven\conf\settings.xml
mvn install:install-file -Dfile=D:\lib\flink-dist_2.11-1.9.3.jar -DgroupId=com.myflink -DartifactId=flink_dist -Dversion=v1.0 -Dpackaging=jar -DgeneratePom=true --settings D:\soft\maven\conf\settings.xml
cmd窗口:
本地仓库:
pom文件中引入依赖:
<dependency>
<groupId>com.myflink</groupId>
<artifactId>flink_dist</artifactId>
<version>v1.0</version>
</dependency>
1.2 Maven打包时,包含所有依赖的jar包
-
在pom中添加以下信息
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4.1</version> <configuration> <!--打包时,包含所有依赖的jar包--> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> <!--生成javadoc文件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <configuration> <encoding>UTF-8</encoding> <charset>UTF-8</charset> <docencoding>UTF-8</docencoding> <doclint>none</doclint> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!--生成source文件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
-
使用
mvn assembly:assembly -Dmaven.test.skip=true
命令打包即可,生成带-jar-with-dependencies
后缀的文件,即为包含所有依赖的jar包。
2. 通过pom引入第三方依赖
<dependency>
<!--随便写-->
<groupId>cn.king</groupId>
<!--随便写-->
<artifactId>flink</artifactId>
<!--随便写-->
<version>v1.1</version>
<!--指定要引入的第三方依赖的位置-->
<systemPath>${project.basedir}/src/lib/flink-dist_2.11-1.9.3.jar</systemPath>
<!--必须指定为system,否则程序编译失败-->
<scope>system</scope>
</dependency>
- 注意,这种方式能保证程序运行正常,但是配合
mvn assembly:assembly -Dmaven.test.skip=true
并不能将所有的依赖都打入jar包中。
3. 通过Add as Library引入第三方依赖
- 经测试,这种方式和上述的
<systemPath>
效果相同,配合mvn assembly:assembly -Dmaven.test.skip=true
并不能将所有的依赖都打入jar包中。