如何将本地jar文件(还不是Maven存储库的一部分)直接添加到项目的库源中?
当前回答
命令行:
mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
其他回答
命令行:
mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
步骤1:使用pom.xml中的目标安装文件配置maven安装插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id>
<phase>clean</phase>
<configuration>
<repositoryLayout>default</repositoryLayout>
<groupId>com.amazonservices.mws</groupId>
<artifactId>mws-client</artifactId>
<version>1.0</version>
<file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
确保根据您的实际文件路径编辑文件路径(建议将这些外部非maven jar放在某个文件夹中,比如说lib,并将该lib文件夹放在项目中,以便使用项目特定的相对路径,避免添加系统特定的绝对路径)。
如果您有多个外部jar,只需对同一maven安装插件中的其他jar重复<execution>即可。
步骤2:在pom.xml文件中如上所示配置maven安装插件后,您必须像往常一样使用pom.xml中的这些jar:
<dependency>
<groupId>com.amazonservices.mws</groupId>
<artifactId>mws-client</artifactId>
<version>1.0</version>
</dependency>
注意,maven安装插件只将外部jar复制到本地的.m2 maven存储库中。就是这样。它不会自动将这些jar作为maven依赖项包含到项目中。
这是一个小问题,但有时很容易忽略。
还可以看看。。。
<scope>compile</scope>
Maven依赖项。这是默认设置,但我发现在某些情况下,也会显式设置Maven的作用域,以便在本地存储库中查找本地库。
在我的案例中,我的现有maven构建已经在将有问题的jar文件安装到我的本地存储库中,但我没有看到预期的结果,因为本地构建会生成后缀为“-SNAPSHOT”的工件。对我来说,非常简单的解决方案是更新使用本地构建jar文件的项目的pom.xml文件,以匹配名称。
<myproject.foo.version>1.88-SNAPSHOT</myproject.foo.version>
而不是
<myproject.foo.version>1.88</myproject.foo.version>
结果是,如果您的jar文件似乎已经在local.m2/maven repo中,那么很可能是这样,您只需要相应地更新依赖关系。
一种方法是将其上传到您自己的Maven存储库管理器(如Nexus)。无论如何,拥有一个自己的存储库管理器是很好的做法。
我最近看到的另一个好方法是在构建生命周期中包含Maven安装插件:在POM中声明将文件安装到本地存储库。这是一个有点但很小的开销,并且不涉及手动步骤。
http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html
推荐文章
- 到底是什么导致了堆栈溢出错误?
- 为什么Android工作室说“等待调试器”如果我不调试?
- Java:路径vs文件
- ExecutorService,如何等待所有任务完成
- Maven依赖Servlet 3.0 API?
- 如何在IntelliJ IDEA中添加目录到应用程序运行概要文件中的类路径?
- getter和setter是糟糕的设计吗?相互矛盾的建议
- Android room persistent: AppDatabase_Impl不存在
- Java的String[]在Kotlin中等价于什么?
- Intellij IDEA上的System.out.println()快捷方式
- 在pom.xml中的<依赖>下的<作用域>是为了什么?
- 使用Spring RestTemplate获取JSON对象列表
- Spring JPA选择特定的列
- URLEncoder不能翻译空格字符
- Java中的super()