0

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

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

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

有任何想法吗?

4

2 回答 2

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 中提取的,但不是可访问的类型。

于 2013-09-18T15:40:18.377 回答
0

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

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

<activeProfiles>
    <activeProfile>default</activeProfile>
</activeProfiles>

记住这个 关于 activeByDefault

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

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

于 2013-09-12T17:31:10.563 回答