问题从Archiva快照存储库中提取SNAPSHOT依赖项

时间:2013-09-12 16:19:53

标签: maven archiva

我一直在设置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>

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

请注意我可以浏览快照存储库,我知道war文件就在那里。

有什么想法吗?

2 个答案:

答案 0 :(得分: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中提取的,但不是一种可访问的类型。

答案 1 :(得分:0)

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

settings.xml 中的配置文件之前

添加类似

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

关于activeByDefault

,请记住this
  

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

如果您想确认这是否是问题,请运行help:active-profiles

查看有效的个人资料