maven从错误的位置获取依赖关系

时间:2016-02-17 16:21:56

标签: java maven github

使用this tutorial,我试图在GitHub上托管一个依赖项,然后在一个单独的应用程序中使用该依赖项。

依赖项位于:

https://github.com/user/repo/raw/master/release/tld/company/app/1.0.0/app-1.0.0.jar

然而。 maven一直坚持:

https://github.com/user/repo/raw/master/release/tld/company/app/app/1.0.0/app-1.0.0.pom

在我称之为依赖关系的pom中,我有:

<repositories>
    <repository>
        <id>tld.company</id>
        <name>app</name>
        <url>https://github.com/user/repo/raw/master/release/</url>
    </repository>
</repositories>

<dependency>
    <groupId>tld.company.app</groupId>
    <artifactId>app</artifactId>
    <version>1.0.0</version>
</dependency>

/master/company/release/tld/company/app/maven-metadata-local.xml 中,我有:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>tld.company.app</groupId>
  <artifactId>app</artifactId>
  <versioning>
    <release>1.0.0</release>
    <versions>
      <version>1.0.0</version>
    </versions>
    <lastUpdated>20160233354414</lastUpdated>
  </versioning>
</metadata>

/master/company/release/tld/company/app/1.0.0/app-1.0.0.pom 中,我有:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>tld.company.app</groupId>
  <artifactId>app</artifactId>
  <version>1.0.0</version>
  <description>POM was created from install:install-file</description>
</project>

依赖关系下载网址中额外/app的原因是什么?

1 个答案:

答案 0 :(得分:1)

组ID应为tld.company,而不是tld.company.app。这解释了您的第二个app

<dependency>
    <groupId>tld.company</groupId>
    <artifactId>app</artifactId>
    <version>1.0.0</version>
</dependency>

基本上,如果您拥有来自以下表单的存储库的URL,Maven就会理解这一点:

https://someserver.com/.../tld/company/app/1.0.0/app-1.0.0.jar
                           ^---------^ ^-^ ^---^ ^-----------^
                              groupId   | version   file name
                                     artifactId
  • 最后一部分,如果文件名为${artifactId}-${version}
  • 之前是版本。
  • 在此之前是工件ID。
  • 之前的所有路径都是组ID,其中斜线被点替换。