Java 如何从本地maven存储库提供Antlr目标?
我正在尝试在脱机机器上构建我的项目(这是一个要求)。我已经创建了本地maven存储库(它只是一个具有适当结构的文件夹),并成功地构建了所有其他东西 我是这样做的: 1) 运行Java 如何从本地maven存储库提供Antlr目标?,java,maven,gradle,antlr4,offline-caching,Java,Maven,Gradle,Antlr4,Offline Caching,我正在尝试在脱机机器上构建我的项目(这是一个要求)。我已经创建了本地maven存储库(它只是一个具有适当结构的文件夹),并成功地构建了所有其他东西 我是这样做的: 1) 运行gradleinstall(这是maven插件的目标) 然后用手检查错误。如果我看到一些图书馆没有找到,那么 2) 我用maven坐标从我的机器上手动复制到这台机器上 除了Antlr之外,它也能工作。我得到以下信息: >gradle install :generateGrammarSource FAILURE: Bu
gradleinstall
(这是maven插件的目标)
然后用手检查错误。如果我看到一些图书馆没有找到,那么
2) 我用maven坐标从我的机器上手动复制到这台机器上
除了Antlr之外,它也能工作。我得到以下信息:
>gradle install
:generateGrammarSource
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':antlr'.
> Could not download antlr4.jar (org.antlr:antlr4:4.5)
> Could not get resource 'http://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5/antlr4-4.5.jar'
> Could not HEAD 'http://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5/antlr4-4.5.jar'.
> Connection to http://repo.maven.apache.org refused
错误消息和往常一样,但这次将jar放入本地maven存储库并没有帮助
如何克服?如何将Antlr配置为从本地maven repo进行eat
更新
文件存在于中
MYHOME\.gradle\caches\modules-2\files-2.1\org.antlr\antlr4\4.5\af4a530e3cd7fa03636645d8077145eefac12907\antlr4-4.5.jar
而且
MYHOME\.m2\repository\org\antlr\antlr4\4.5\antlr4-4.5.jar
在maven案例中,还存在伴随文件
更新2
注意它说
Could not resolve all dependencies for configuration ':antlr'.
Antlr依赖项是由
antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
i、 e.不compile
和不testCompile
。也许这就是线索?这可能是专门为antlr
配置repositores的一种方式吗
更新3
我成功地解决了那些案件,它写道:
Could not resolve all dependencies for configuration ':compile'.
> Could not resolve net.coobird:thumbnailator:0.4.8.
Required by:
com.cireca.overlaywidget:OverlayWidget:1.0-SNAPSHOT
> Could not resolve net.coobird:thumbnailator:0.4.8.
> Could not get resource 'https://repo1.maven.org/maven2/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.pom'.
> Could not GET 'https://repo1.maven.org/maven2/net/coobird/thumbnailator/0.4.8/thumbnailator-0.4.8.pom'.
> Connection to https://repo1.maven.org refused
更新4
奇怪的事。我注意到我的配置看起来多余:
repositories {
maven { url "http://repo.maven.apache.org/maven2" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "http://maven-eclipse.github.io/maven" }
mavenLocal()
flatDir {
dirs 'lib'
}
maven { url "http://repo.maven.apache.org/maven2" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "http://maven-eclipse.github.io/maven" }
}
我把这个改成了
repositories {
mavenLocal()
flatDir {
dirs 'lib'
}
maven { url "http://repo.maven.apache.org/maven2" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "http://maven-eclipse.github.io/maven" }
}
从那以后,它开始声称不同的里拉。首先它声称
org.antlr:antlr4-runtime:4.5
我成功地喂了它,但它声称
org.antlr:antlr-runtime:3.5.2
我无法为它提供数据(相同的情况)。Maven会按照您的settings.xml中的指定联系存储库。如果要避免使用外部存储库,则需要镜像所有内容
实际上,在未连接到internet的环境中工作的最佳方法是建立自己的Nexus/Artifactory。最简单的方法是填充存储库供脱机使用,将其连接到internet一次,然后构建所有内容并断开连接。然后,您就有了与您相关的所有内容的本地副本。我已经从该计算机上完全删除了远程存储库引用(在此之前,远程存储库的优先级较低) 之后Gradle开始以显式局部路径的形式报告它遗漏了什么,我发现它缺少一些父(?)工件 例如,对于番石榴,它是希望
com.google.Guava:Guava parent
,而对于antlr,它是org.antlr:antlr master
。配置中存在远程存储库时,不会报告这些名称
如果有人能更详细地解释发生了什么,我会接受他的回答。在你的报告中显示结构为什么显示
无法下载antlr4.jar(org.antlr:antlr4:4.5)
在哪里应该尝试下载antlr4-4.5.jar
?我不能复制它,它在我的工作站上工作。@Opal你在哪里看到它不能下载antlr4.jar
?它无法下载org.antlr:antlr4:4.5
,它们是maven坐标。相应的JAR名称是antlr4-4.5.JAR
。此外,请运行gradle dependencies
,并调查您定义的antlr依赖项是否没有被其他版本替代。我正在镜像所有内容。但在antlr的情况下,它不起作用。