本地Nexus存储库除了通过POM依赖的主jar外,还可以提取所有内容

时间:2015-02-02 22:11:44

标签: maven jboss drools nexus sonatype

我们的本地Nexus存储库在下载依赖项方面似乎不一致。它会拉下pom,甚至测试罐子......但不是我需要的主要实际罐子!所以当我浏览我们的中央(代理)存储库上的drools-compiler:org / drools / drools-compiler的索引时,我看到以下文件:

  • 滴料编译-6.2.0.CR4-javadoc.jar
  • 滴料编译-6.2.0.CR4-sources.jar
  • drools-compiler-6.2.0.CR4-test-sources.jar
  • drools-compiler-6.2.0.CR4-tests.jar
  • drools-compiler-6.2.0.CR4.pom

缺少的关键文件是:
滴料编译-6.2.0.CR4.jar

当我浏览遥控器时,一切都在那里,包括关键的罐子。

当我运行mvn clean install时(通过我的IDE STS 3.6.3),我最终看到以下错误消息:

  

无法在项目上执行目标:
  无法解决项目的依赖关系:
  无法在org.drools中收集依赖项:drools-compiler:jar:6.2.0.CR4:
  无法读取org.drools的工件描述符:drools-compiler:jar:6.2.0.CR4:
  未能找到org.jboss.dashboard-builder:dashboard-builder-bom:pom:6.2.0.CR4 in缓存在本地存储库中,在nexus的更新间隔已经过去或强制更新之前,不会重新尝试解析< / em>的

过去有很多其他的依赖项已被删除,存储库已存在很长时间了(我没有设置它,只是现在处理!)... JBoss drools不是我唯一一次看到这一点,现在只是我最紧迫的问题。

我用谷歌搜索过,有些帖子看似相关,(one几乎相同但未解决)但似乎无法找到解决方案。已在我们的本地Jboss和Central代理中设置远程索引下载。我已经尝试清除缓存,重建索引,在我的mvn命令中添加“-U”......但无济于事。我唯一能够构建我的项目的时候是我完全绕过我的本地存储库(空.m2 / settings.xml)并直接从Central或JBoss public。有没有人对这里可能出现的问题有所了解?

更新: 更多细节可能会有所帮助: 在我的settingx.xml(下面)中定义为镜像的存储库'nexus'是一个Group Repository,由(按此顺序)组成:
*中央(http://repo1.maven.org/maven2/
* JBoss public(http://repository.jboss.org/nexus/content/groups/public/
*回收我们自己上传的本地罐子......

按照@Steve的建议,我比缺少的drools编译器文件挖得更深,发现org.jboss.dashboard-builder.dashboard-builder-bom ...在Central中不存在,有趣的是,它确实存在在JBoss。我的理解是,通过使用Repos组,它应该查询列表中的下一个回购,如果找不到的话,对吧?任何建议最受赞赏!

的settings.xml:

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>(local server)/nexus/content/groups/public</url>
    </mirror>    
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>  
  </profiles>
  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>

的pom.xml

<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>
    <groupId>com.mypackage.here</groupId>
    <artifactId>TaskLaunchManager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>TaskLaunchManager</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <app.name>task-launch-manager</app.name>
        <log4j.version>1.2.16</log4j.version>
        <junit.version>4.8.1</junit.version>
        <drools.version>6.2.0.CR4</drools.version>
        <slf4j.version>1.7.9</slf4j.version>
    </properties>

    <!-- Drools Maven BOM (Bill of Materials) -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.drools</groupId>
                <artifactId>drools-bom</artifactId>
                <type>pom</type>
                <version>${drools.version}</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.kie</groupId>
                <artifactId>kie-bom</artifactId>
                <type>pom</type>
                <version>${drools.version}</version>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- Required dependencies -->
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
        <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>       
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-internal</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-decisiontables</artifactId>
        </dependency>

    </dependencies>

</project>

1 个答案:

答案 0 :(得分:5)

好的,问题解决了!它花了几个步骤,其中一些在stackoverflow的其他地方被提到并且已经尝试过但没有成功,但订单真的很重要:

  1. 仪表板 - 构建器工件不在Maven Central代理中,而是在JBoss公共代理中。该代理需要在本地创建(已经)
  2. 由于需要从Central以及JBoss获取工件,因此需要创建一个Group repo来保存它们(已经存在)
  3. 在组回购中,JBoss需要添加到它...(它不是 facepalm )...它仍然列在'可用存储库'而不是'订购组存储库
  4. 即使在添加之后,由于缓存仍然存在构建失败,而不是重建的索引等。我需要使用'-U'开关强制更新,如此stackoverflow post中所述:{{1} }
  5. 即使看到构建成功,在我的IDE中,项目仍然指示了pom中的错误。这是由于m2eclipse ...并且通过动作解决了:Maven&gt;更新项目...&gt;检查“强制更新快照/版本”