将dependencyManagement与项目存储库中的本地

时间:2015-09-22 17:17:52

标签: java maven

我的项目结构类似:

parent-project
|-pom.xml
|
|-proj-A
|   |-pom.xml
|
|-proj-B
|   |-pom.xml
|
|-proj-C
|   |-pom.xml (1)
|   |-lib (2)
|   |-proj-C-child-A
|      |-pom.xml (3)
|   |-proj-C-child-B
|      |-pom.xml (3)

proj-A proj-B 都是父项目的独立子模块。

proj-C 有多个子模块,这些子模块依赖于无法从远程存储库中检索的非托管库。

我试图:

  1. 将这些JAR(using these instructions)导入上面显示的" lib(2)" 文件夹。

    mvn deploy:deploy-file \
        -Durl=<path-to-proj-C>/lib \
        -Dfile=<path-to-the-external-jar> \
        -DgroupId=<groupId-for-jar> \
        -DartifactId=<artifactId-for-jar> \
        -DrepositoryId=lib \
        -Dversion=<version-for-jar>
    
  2. <repositories>部分添加到 proj-C pom.xml(1)

    <repositories>
        <repository>
            <id>lib</id>
            <name>local-filesystem-repository</name>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>file://${project.basedir}/lib</url>
        </repository>
    </repositories>
    
  3. 将依赖项添加到 proj-C pom.xml(1)

    中的<dependencyManagement>部分
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>my-shiny-jar</groupId>
                <artifactId>shiny-api</artifactId>
                <version>1.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  4. 子模块中添加依赖项(3) <dependencies>部分

    <dependencies>
        <dependency>
            <groupId>my-shiny-jar</groupId>
            <artifactId>shiny-api</artifactId>
        </dependency>
    </dependencies>
    
  5. 这不起作用。它无法获取依赖项,因为它在子模块的lib目录中而不是在定义存储库的父目录中查找它们。

    Downloading: file://<path-to-proj-C>/proj-C-child-A/lib/...
    ...
    ...Could not find artifact <groupId>:<version> in lib 
        (file://<path-to-proj-C>/proj-C-child-A/lib) -> [Help 1]
    

    看起来它正在使用正在构建的项目,而不是用于替换file://${project.basedir}/lib元素中的<repositories>的项目。

    在不使用远程存储库的情况下处理此问题的最佳方法是什么?

0 个答案:

没有答案