Maven 引入中央仓库中不存在/自定义/第三方的 jar 包、以及打包为生成可运行 jar 包

如果有些jar包在maven仓库中是不存在,我们有两种方式将其引入到我们的maven工程。我这里已smarthome-nbcodec-1.1.6-SNAPSHOT.jar 包为例。

第一种方式比较简单,只需将其jar包导入到本地 mavan 仓库中。

mvn install:install-file -Dfile=PATH/smarthome-nbcodec-1.1.6-SNAPSHOT.jar -DgroupId=com.my.smarthome -DartifactId=nbcodec -Dversion=1.1.6-SNAPSHOT -Dpackaging=jar -DgeneratePom=true 

其中,Dfile为jar包的位置,-DgroupId、-DartifactId、-Dversion可根据情况自定义,-Dpackaging为jar。然后就可以正常通过pom引入了。

	<dependency>
			<groupId>com.my.smarthome</groupId>
			<artifactId>nbcodec</artifactId>
			<version>1.1.6-SNAPSHOT</version>
		</dependency>

第二章方式可以将其放到项目中,然后引入进来

首先在项目中建立一个libs目录来存放第三方jar包。

pom 引入

	<dependency>
			<groupId>smarthome</groupId>
			<artifactId>nbcodec</artifactId>
			<version>1.1.6-SNAPSHOT</version>
			<scope>system</scope>
			<systemPath>${pom.basedir}/libs/smarthome-nbcodec-1.1.6-SNAPSHOT.jar</systemPath>
		</dependency>

其中,groupId、artifactId、version可根据情况自定义,scope只能是system范围,systemPath 为 jar 包的位置,pom.basedir为。

这样可以直接在代码中直接使用了,但是打包后还是运行不了,因此还得配置下打包相关的配置。

maven-assembly-plugin插件打包

<build>
		<resources>
			<!-- 复制本地扩展jar包到libs目录 -->
			<resource>
				<directory>./libs</directory> <!-- 当前libs目录下的jar包 -->
				<targetPath>${project.build.directory}/dist/${artifactId}-${version}/lib</targetPath> <!-- 复制到本模块打包目录的lib目录 -->
				<includes>
					<include>**/*.jar</include>
				</includes>
			</resource>
			<!--定义了上面的resource, 要想默认的src/main/resources目录生效, 必须显式额外增加下面的配置-->
			<resource>
				<directory>src/main/resources</directory>
				<!-- 表示是否对配置文件中的${}占位符进行解析替换-->
				<filtering>false</filtering>
			</resource>
		</resources>

		<plugins>
			<!-- maven-assembly-plugin插件配置,配置输出目录为dist -->
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<appendAssemblyId>false</appendAssemblyId>
					<descriptors>
						<descriptor>package.xml</descriptor>
					</descriptors>
					<outputDirectory>${project.build.directory}/dist/</outputDirectory>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>com.xiangtao.LotApp</mainClass>
							<classpathPrefix>lib/</classpathPrefix>
							<addClasspath>true</addClasspath>
						</manifest>
						<manifestEntries>
							<!-- 在Class-Path下添加配置文件的路径 -->
							<Class-Path>resources/ lib/smarthome-nbcodec-1.1.6-SNAPSHOT.jar</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>

重点注意下位置别写错

如果最后还是不成功,可以将其打包后的jar包进行解压,然后检查看生成的 MANIFEST.MF 文件,看所有的包是否真确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚码农404

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值