我有一个内部库中的一些本地构建的JAR文件。今晚的任务是将现有的(正在运行的)Maven项目转换为使用Gradle构建。我可以在同一存储库中成功链接到Apache-commons3,据我所知,Maven坐标是以相同的方式形成的。
从小开始,我尝试使用本地构建的“Util.jar”编译一个小的主程序:
dependencies{
// -- local lib --
compile group: 'lib.java8', name: 'util', version: '00.08.007'
// -- apache commons --
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.3.2'
}
在资源库文件夹区域中,本地库JAR和Apache之间的文件版本对我来说似乎是一致的。首先图书馆...
Directory of r:\.repo\maven\.m2\repository\local\lib\java8\util\00.08.007
07-Jun-2015 21:20 20,585 util-00.08.007.jar
27-Apr-2015 21:03 1,829 util-00.08.007.pom
以及同一存储库中的Apache-commons条目:
Directory of r:\.repo\maven\.m2\repository\local\org\apache\commons\commons-lang3\3.3.2
16-Dec-2014 21:48 412,739 commons-lang3-3.3.2.jar
16-Dec-2014 21:48 40 commons-lang3-3.3.2.jar.sha1
16-Dec-2014 21:48 20,377 commons-lang3-3.3.2.pom
16-Dec-2014 21:48 40 commons-lang3-3.3.2.pom.sha1
09-May-2015 23:12 261 _maven.repositories
17-Sep-2014 19:31 199 _remote.repositories
在我看来,两个示例的文件名-versionNumber-s的结构相似。然而
gradle assemble
目标报告有关本地编译的库JAR的错误。
gradle组装 ...
:compileJava
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':compile'.
> Could not find lib.tmacs.java8:util:00.08.007.
Searched in the following locations:
https://repo1.maven.org/maven2/lib/java8/util/00.08.007/util-00.08.007.pom
https://repo1.maven.org/maven2/lib/java8/util/00.08.007/util-00.08.007.jar
Required by:
:dataexample:00.00.001-SNAPSHOT
BUILD FAILED
我感到难过。在每种情况下,匹配的存储库文件都以相同的方式进行协调。
题:
Util.jar
吗? Util.jar
库的Maven POM,以便新的Gradle项目和现有的Maven POM项目都可以使用相同的JAR构建? 最后,我是在问正确的问题,还是我完全偏离了轨道?
最佳答案
Gradle已经给您答案:
Searched in the following locations:
https://repo1.maven.org/maven2/lib/java8/util/00.08.007/util-00.08.007.pom
https://repo1.maven.org/maven2/lib/java8/util/00.08.007/util-00.08.007.jar
您需要指示gradle在哪里寻找 Artifact 。参见this question或this one。感兴趣的关键字是
mavenLocal()
。有关定义存储库的所有信息都可以在the docs中找到
关于java - 为什么Gradle在本地m2存储库中看不到该Maven坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782007/