【问题标题】:Issue pulling SNAPSHOT dependencies from Archiva snapshot repository从 Archiva 快照存储库中提取 SNAPSHOT 依赖项的问题
【发布时间】:2013-09-17 03:33:12
【问题描述】:

我一直在设置一个 Apache Archiva 实例作为 Maven Central 的代理和捕获我们的开发快照。我已经设法设置了代理,并且可以将工件部署到 Archiva 快照存储库,但是我无法从快照存储库中提取工件以用于其他项目。

pom.xml 的相关部分(依赖项目)

<project>
  <!-- Excluded detail -->
  <dependency>
    <groupId>uk.abc</groupId>
    <artifactId>ABC</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>war</type>
  </dependency>
  <!-- Excluded detail -->
  <distributionManagement>
    <repository>
        <id>archiva.snapshots</id>
        <name>Snapshot Repository</name>
        <url>https://xxx.xxx.xxx.xxx/archiva/repository/snapshots</url>
    </repository>
  </distributionManagement>
  <!-- Excluded detail -->
</project> 

我的~/.m2/settings.xml

<settings>
  <servers>
    <server>
      <id>archiva.snapshots</id>
      <username>username</username>
      <password>xxx</password>
    </server>
    <server>
      <id>archiva.internal</id>
      <username>username</username>
      <password>xxx</password>
    </server>
  </servers>
  <mirrors>
    <mirror>
        <id>archiva.internal</id>
        <mirrorOf>central</mirrorOf>
        <url>https://xxx.xxx.xxx.xxx/archiva/repository/internal</url>
    </mirror>
    <mirror>
        <id>archiva.snapshots</id>
        <mirrorOf>snapshots</mirrorOf>
        <url>https://xxx.xxx.xxx.xxx/archiva/repository/snapshots</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
              <id>archiva.internal</id>
              <name>Archiva Managed Internal Repository</name>
              <url>https://xxx.xxx.xxx.xxx/archiva/repository/internal/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>false</enabled>
              </snapshots>
            </repository>
            <repository>
              <id>archiva.snapshots</id>
              <name>Archiva Managed Internal Repository</name>
              <url>https://xxx.xxx.xxx.xxx/archiva/repository/snapshots/</url>
              <releases>
                <enabled>false</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
        </repositories>
    </profile>
  </profiles>
</settings>

当我构建依赖项目时,我无法引用类(公共访问)。

请注意,我可以浏览快照存储库并且我知道战争文件在那里。

有什么想法吗?

【问题讨论】:

    标签: maven archiva


    【解决方案1】:

    事实证明,您不能使用“war”依赖类型并期望能够引用包含的类。但是,您可以创建一个包含类的附加 jar(创建 war 和 jar):

    http://maven.apache.org/plugins/maven-war-plugin/faq.html#attached

    在引入依赖项时,您可以使用“jar”类型...在我的情况下:

    <dependency>
        <groupId>uk.abc</groupId>
        <artifactId>ABC</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
    

    因此我认为这个问题有点误导......依赖项是从 Archiva 中提取的,但不是可访问类型。

    【讨论】:

      【解决方案2】:

      您可能没有正确激活配置文件

      在 settings.xml 中的配置文件之前放置类似

      的内容
      <activeProfiles>
          <activeProfile>default</activeProfile>
      </activeProfiles>
      

      记住 this 关于 activeByDefault

      此配置文件将自动对所有构建有效,除非 使用其中一个激活同一 POM 中的另一个配置文件 之前描述的方法。默认情况下处于活动状态的所有配置文件 当 POM 中的配置文件被激活时会自动停用 在命令行上或通过其激活配置。

      如果您想确认这是否是问题所在,请通过运行 help:active-profiles 查看活动配置文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        • 2013-06-14
        • 2020-05-07
        • 2012-10-22
        • 2013-12-11
        相关资源
        最近更新 更多