Java 如何从本地maven存储库提供Antlr目标?

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

我正在尝试在脱机机器上构建我的项目(这是一个要求)。我已经创建了本地maven存储库(它只是一个具有适当结构的文件夹),并成功地构建了所有其他东西

我是这样做的:

1) 运行
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的情况下,它不起作用。