如何将本地jar文件(还不是Maven存储库的一部分)直接添加到项目的库源中?
当前回答
依赖关系的重要部分是:${pom.basedir}(而不仅仅是${basedir})
<dependency>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${pom.basedir}/src/lib/example.jar</systemPath>
</dependency>
其他回答
创建一个本地Maven存储库目录,您的项目根目录应该如下所示:
yourproject
+- pom.xml
+- src
为组com.example和版本1.0添加名为repo的标准Maven存储库目录:
yourproject
+- pom.xml
+- src
+- repo
将工件部署到Repo中,Maven可以使用mvn Deploy:Deploy文件目标为您部署工件:
mvn deploy:deploy-file -Durl=file:///pathtoyour/repo -Dfile=your.jar -DgroupId=your.group.id -DartifactId=yourid -Dpackaging=jar -Dversion=1.0
安装与jar对应的pom文件,以便您的项目可以在maven构建过程中从本地repo找到jar:
mvn install:install-file -Dfile=/path-to-your-jar-1.0.jar -DpomFile=/path-to-your-pom-1.0.pom
在pom文件中添加repo:
<repositories>
<!--other repositories if any-->
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
在pom中添加依赖项:
<dependency>
<groupId>com.groupid</groupId>
<artifactId>myid</artifactId>
<version>1.0</version>
</dependency>
将JAR安装到本地Maven存储库中(通常位于主文件夹中的.m2),如下所示:
mvn install:install-file \
-Dfile=<path-to-file> \
-DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=<packaging> \
-DgeneratePom=true
其中每一个都指:
<path to file>:要加载的文件的路径,例如→ c: \patcha-2.3.jar
<group id>:文件应在其下注册的组,例如→ com.google代码
<artifact-id>:文件的工件名称,例如→ 卡普查
<version>:文件的版本,例如→ 2.3
<package>:文件的打包,例如。→ 罐子
参考
Maven常见问题解答:我有一个jar,我想把它放到我的本地存储库中。我如何复制它?Maven安装插件用法:Install:Install文件目标
在我的案例中,我的现有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中,那么很可能是这样,您只需要相应地更新依赖关系。
在本地存储库中,您可以通过发出以下命令来安装jar
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
点击这个有用的链接,从mkyoung的网站进行同样的操作。您也可以查看maven指南
我的pom.xml中的一组依赖项也出现了同样的错误。结果发现,这些依赖项的版本没有在pom.xml内指定,而是在父存储库中提到的。由于某种原因,版本详细信息未与此回购同步。因此,我使用标签手动输入版本,它就像一个符咒。查找父级中的版本并在此处指定所需的时间很少。但是,这可以仅针对显示人为错误的罐子进行,而且效果良好。希望这对某人有所帮助。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap