在Maven项目中添加本地jar包的三种方法

电脑杂谈  发布时间:2020-04-03 13:12:33  来源:网络整理

maven安装jar包_maven jar包_maven下载jar包

今年我采访了阿里maven安装jar包,腾讯和美团后,我发现了一个重要发现……......

翻译成3种向Maven项目添加本地jar的方式

[目录]

在构建Maven项目时,有时需要导入本地jar包. 本文介绍了三种添加本地jar包的方法.

手动将jar包添加到本地仓库中添加为系统范围依赖项创建其他本地仓库使用Nexus仓库管理器

第一个解决方案是通过Maven目标install: install-file命令将jar软件包安装到本地存储库. 该插件的使用很简单,如下所示:

MVN安装: install-file -Dfile = <文件路径>

maven下载jar包_maven jar包_maven安装jar包

注意: 我们尚未定义依赖于软件包的groupId,articleId,版本,包装属性. 实际上,从2.5版本的Maven-install-plugin插件开始,可以从特定的pom文件中获得此信息.

这些属性也可以添加到命令行:

MVN安装: 安装文件-Dfile = <文件路径> -DgroupId = <组ID> -DartifactId = <工件ID> -Dversion = <版本>

位置:

是jar包的文件路径

是jar包的GroupId

是jar包的ArtifactId

maven下载jar包_maven jar包_maven安装jar包

是jar软件包的版本号

示例:

MVN安装: 安装文件--Dfile = C: \ dev \ app.jar -DgroupId = com.roufid.tutorials -DartifactId = example-app -Dversion = 1.0

以与添加pom依赖包相同的方式,可以将上述jar包导入到maven项目中:

<dependency>
	<groupId>com.roufid.tutorials</groupId>
	<artifactId>example-app</artifactId>
	<version>1.0</version>
</dependency>

这种添加本地依赖项的方法非常昂贵. 因为它将依赖文件直接添加到本地Maven存储库,所以如果一天切换本地存储库,则必须再次重新安装jar包. 同时,这不利于项目迁移和协同开发.

另一种解决方案是在pom文件中使用maven-install-plugin插件. 此方法将在maven初始化阶段添加相应的jar包. 为了达到上述效果,必须定义jar包需要安装的路径. 最好的方法是将需要安装的jar包放置在项目根路径(与pom.xml相同的目录)中的文件夹中.

maven安装jar包_maven jar包_maven下载jar包

我们假定jar包的位置为 /lib/app.jar. 以下是maven-install-plugin的配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.roufid.tutorials</groupId>
                <artifactId>example-app</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${basedir}/lib/app.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

$ {basedir}指pom.xml所在的根路径.

添加上述代码时,您可能会遇到错误(未遇到> _ <),然后添加以下配置以允许maven生命周期的映射关系:

<pluginManagement>
	<plugins>
		<!--This plugin's configuration is used to store Eclipse m2e settings only. 
			It has no influence on the Maven build itself. -->
		<plugin>
			<groupId>org.eclipse.m2e</groupId>
			<artifactId>lifecycle-mapping</artifactId>
			<version>1.0.0</version>
			<configuration>
				<lifecycleMappingMetadata>
					<pluginExecutions>
						<pluginExecution>
							<pluginExecutionFilter>
								<groupId>org.codehaus.mojo</groupId>
								<artifactId>aspectj-maven-plugin</artifactId>
								<versionRange>[1.0,)</versionRange>
								<goals>
									<goal>test-compile</goal>
									<goal>compile</goal>
								</goals>
							</pluginExecutionFilter>
							<action>
								<execute />
							</action>
						</pluginExecution>
						<pluginExecution>
							<pluginExecutionFilter>
								<groupId>
									org.apache.maven.plugins
								</groupId>
								<artifactId>
									maven-install-plugin
								</artifactId>
								<versionRange>
									[2.5,)
								</versionRange>
								<goals>
									<goal>install-file</goal>
								</goals>
							</pluginExecutionFilter>
							<action>
								<execute>
									<runOnIncremental>false</runOnIncremental>
								</execute>
							</action>
						</pluginExecution>
					</pluginExecutions>
				</lifecycleMappingMetadata>
			</configuration>
		</plugin>
	</plugins>
</pluginManagement>

此解决方案(不是特别好)是通过添加系统范围并指向jar包的完整路径. 如果jar包的路径是 / lib,则其配置如下:

<dependency>
	<groupId>com.roufid.tutorials</groupId>
	<artifactId>example-app</artifactId>
	<version>1.0</version>
	<scope>system</scope>
	<systemPath>${basedir}/lib/yourJar.jar</systemPath>
</dependency>

maven安装jar包_maven jar包_maven下载jar包

$ {basedir}指pom.xml所在的根路径.

第三种解决方案与第一种解决方案类似,不同之处在于,已安装jar包的位置. 假设我们有一个名为maven-repository的本地存储库,其位置为$ {basedir}(pom.xml所在的根路径). 第一步是将jar包部署到本地存储库,如下所示:

mvn deploy: deploy-file -Dfile = <文件路径> -DgroupId = <组ID> -DartifactId = -Dversion = <版本> -Dpackaging = jar -Durl =文件: ./maven-repository/ -DrepositoryId = maven-repository -DupdateReleaseInfo = true

通常,Maven命令deploy: deploy-file将人工安装在远程存储库中,但是在此示例中,存储库地址为本地. 添加jar包后,需要在相应的pom文件中添加相应的存储库:

<repositories>
    <repository>
        <id>maven-repository</id>
        <url>file:///${project.basedir}/maven-repository</url>
    </repository>
</repositories>

然后添加相应的依赖项:

<dependency>
	<groupId>com.roufid.tutorials</groupId>
	<artifactId>example-app</artifactId>
	<version>1.0</version>
</dependency>

最好的方法当然是建立自己的私有云仓库. 如何安装?在这里戳

695856371 Web网页设计师②群 |喜欢此站点的朋友可以将其添加为书签,或加入我们一起交流技术!

欢迎访问梁仲霖的个人博客网站. 该个人博客网站提供了最新的网站管理员新闻和各种Internet信息. 还提供个人博客模板maven安装jar包,最新和最完整的Java教程,Java面试问题. 在这里,我将竭尽所能,使这个个人博客网站成为最佳网站!谢谢大家,希望大家一起进步!


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-162471-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 黄利勇
        黄利勇

        不会再收美帝的剥削

      热点图片
      拼命载入中...