在Maven依赖规范中包装groupId值

时间:2019-06-19 08:40:18

标签: java maven log4j

我正在尝试在应用程序中添加log4j-rolling-appender库作为依赖项。罐子在这里可用:

  

https://mvnrepository.com/artifact/uk.org.simonsite/log4j-rolling-appender/

我在pom.xml中添加了以下两件事(存储库和jar规范)。下面的代码段:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        <modelVersion>4.0.0</modelVersion>
        ...
        ...
        <repositories>
            <repository>
                <id>log4j-appender</id>
                <name> Repository for log4j-rolling-appender</name>
                <url>https://mvnrepository.com/artifact/</url>
            </repository>
        </repositories>

        <dependency>
            <groupId>uk.org.simonsite</groupId>
            <artifactId>log4j-rolling-appender</artifactId>
            <version>20131024-2017</version>
        </dependency>
        ...
        ...
</project>

在构建时,maven生成以下URL来下载不正确的依赖项(尽管按照标准,这是正确的,但就我而言是不正确的):

  

https://mvnrepository.com/artifact/uk/org/simonsite/log4j-rolling-appender/20131024-2017/log4j-rolling-appender-20131024-2017.pom

请注意如何将groupId(uk.org.simonsite)中提到的软件包转换为URL(../uk/org/simonsite/)中的软件包层次结构。

可以找到JAR并希望Maven生成的URL是:

  

https://mvnrepository.com/artifact/uk.org.simonsite/log4j-rolling-appender/20131024-2017/log4j-rolling-appender-20131024-2017.pom

有人可以提供有关我如何指示Maven在生成URL时跳过此转换的任何建议吗?

2 个答案:

答案 0 :(得分:1)

Maven存储库具有用于解析Maven坐标的固定格式。

在起始URL之后,有一个cat1而不是cat2的groupId,然后是artifactId,然后是版本,然后是包含artifactId,版本,分类符(如果存在)和扩展名的文件名

如果要从其他URL绘制jar,则该URL不是Maven存储库。您应该先下载jar,然后将其安装到公司存储库(或您自己的本地存储库,如果没有其他可用的存储库)。

答案 1 :(得分:-1)

如果您使用了多个依赖项,则应尝试使用注释包装所有依赖项。

也请遵循以下模式:

<project>
    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-b</artifactId>
      <version>1.0</version>
      <type>bar</type>
      <scope>runtime</scope>
    </dependency>

  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

与作用域系统的依赖关系始终可用,不会在存储库中查找。总是先使用依赖项,然后再按顺序使用存储库。