【问题标题】:What is the point of repositories when working with maven in offline mode在离线模式下使用 maven 时,存储库的意义何在
【发布时间】:2016-10-14 13:34:15
【问题描述】:

我正在毫无问题地构建我的应用程序:

mvn clean install -o

但是当我从 .m2/settings.xml 中的默认配置文件中删除存储库时

<repositories>
    <repository>
        <id>ais3-repo</id>
        <name>My Repository</name>
        <url>some.url.to.work.artifactory</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <layout>default</layout>
    </repository>
    <repository>
        <id>icz-internal-repo</id>
        <url>some.url.to.work.artifactory</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

然后我得到错误:

存储库系统处于脱机状态,但工件 com.ibm.informix:ifxjdbc:jar:4.1 在本地存储库中不可用。

为什么现在抱怨离线存储库?即使我将 url 编辑为一些废话,它仍然可以工作。那么当 url 不相关时,这些存储库在离线 maven 模式下的意义何在?

PS:

在设置中我仍然定义了本地存储库:

<localRepository>/home/user/.m2/repository</localRepository>

PS1:

ll /home/user/.m2/repository/com/ibm/informix/ifxjdbc/4.1

drwxrwxr-x 5 user user    4096 Jul 22  2014 ../
-rw-rw-r-- 1 user user 1057532 Jul  9  2014 ifxjdbc-4.1.jar
-rw-rw-r-- 1 user user    1366 Oct 14 15:11 ifxjdbc-4.1.jar.lastUpdated
-rw-rw-r-- 1 user user      57 Jul  9  2014 ifxjdbc-4.1.jar.sha1
-rw-rw-r-- 1 user user     417 Jul  9  2014 ifxjdbc-4.1.pom
-rw-rw-r-- 1 user user    1346 Oct 14 15:11 ifxjdbc-4.1.pom.lastUpdated
-rw-rw-r-- 1 user user      57 Jul  9  2014 ifxjdbc-4.1.pom.sha1
-rw-rw-r-- 1 user user     788 Sep 22  2014 ifxjdbc-4.1-sources.jar.lastUpdated
-rw-rw-r-- 1 user user     543 Sep 22  2014 m2e-lastUpdated.properties
-rw-rw-r-- 1 user user     249 Oct 15  2015 _maven.repositories

【问题讨论】:

  • 离线工作时,不考虑存储库,这是设计使然。如果它与mvn clean install -o 一起使用,那么构建项目所需的所有工件都在您的本地存储库中,因此,您不能让 工件 com.ibm.informix:ifxjdbc:jar:4.1 在本地存储库。要么您更改了本地存储库,要么您在某处更改了依赖项。 com.ibm.informix:ifxjdbc:jar:4.1 是否在 /home/user/.m2/repository/com/ibm/informix/ifxjdbc/4.1 下的本地仓库中?
  • 我编辑了我的问题,以便您可以在 PS1 中看到输出
  • 您可以尝试删除所有.lastUpdated 文件和_maven.repositories 吗?但是您不应该在运行mvn clean install -o 或删除设置中的某些存储库时出现该错误...
  • ok 删除 _maven.repositories 可以帮助我解决这个问题。非常感谢
  • 太好了,我会为此写一个答案。我找到了真正的原因。

标签: java maven


【解决方案1】:

Maven 存储库是一个很棒的概念,当您处理多个 Maven 项目时非常有用。如果多个项目需要它们,它可以节省下载相同和相同 jar 的时间。

当您构建任何 maven 项目时,首先它会在本地存储库中查找依赖 jar,如果不可用,则从通过网络访问的存储库(可以是 Intranet 或 Internet)下载并将其存储在本地存储库中。

下载后,如果将来有任何项目需要,将使用相同的 jar。 (版本应该匹配)

【讨论】:

  • 我不明白你的回答。你读过这个问题吗? OP 永远不会离开离线模式。
  • 即使你在线,maven 总是先引用本地仓库。仅将 jar 下载到本地 repo 需要网络连接。下载后,始终从本地存储库中使用。
  • 正如您在我的问题中看到的那样,这不是真的。 Maven 控制着你在哪里下载了这个 jars,如果你像我这样组合更多的配置文件,你需要删除一些东西:stackoverflow.com/questions/16866978/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 2015-07-07
  • 1970-01-01
  • 2019-01-11
相关资源
最近更新 更多