Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保Maven从父lib文件夹获取jar并忽略子模块?_Java_Maven_Jenkins_Pom.xml_Parent Pom - Fatal编程技术网

Java 如何确保Maven从父lib文件夹获取jar并忽略子模块?

Java 如何确保Maven从父lib文件夹获取jar并忽略子模块?,java,maven,jenkins,pom.xml,parent-pom,Java,Maven,Jenkins,Pom.xml,Parent Pom,我的项目结构如下: - app - app-repo - app-service - app-controller - lib (custom jar placed here) - pom.xml (parent pom) <repositories> <repository> <id>in-project</id> <name>In Proj

我的项目结构如下:

- app
  - app-repo
  - app-service
  - app-controller
  - lib (custom jar placed here)
  - pom.xml (parent pom)
    <repositories>
        <repository>
            <id>in-project</id>
            <name>In Project Repo</name>
            <url>file://${project.parent.basedir}/lib</url>
        </repository>
    </repositories>
我的父pom包括子模块和从lib文件夹获取jar的存储库位置

    <repositories>
        <repository>
            <id>in-project</id>
            <name>In Project Repo</name>
            <url>file://${main.basedir}/lib</url>
        </repository>
    </repositories>
    
    <modules>
        <module>app-repo</module>
        <module>app-service</module>
        <module>app-controller</module>
    </modules>

    <properties>
        <main.basedir>${project.basedir}</main.basedir>
        <jar.version>1.7</jar.version>
        <release.version>1.0-SNAPSHOT</release.version>
    </properties>

    <dependencies>
        <dependency>  <!-- jar file located in lib folder -->
            <groupId>com.custom</groupId>
            <artifactId>custom-core</artifactId>
            <version>${jar.version}</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
在构建app repo时失败,出现错误:

Failure to find com.custom:custom-core:jar:1.7 in
file://C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins\workspace\My_APP\app-repo/lib was cached in the local repository
我发现maven在子模块构建期间从父pom继承了
,因此
文件:/${main.basedir}/lib
导致maven查找app repo/lib并出错

所以我想知道处理这种情况的最佳实践是什么

  • 如何确保maven总是从lib文件夹中获取jar并忽略子模块
  • 父pom.xml的正确/最佳配置是什么
  • 我尝试将
    文件://${project.parent.basedir}/lib
    添加到app repo中的子pom.xml中,如下所示:

    - app
      - app-repo
      - app-service
      - app-controller
      - lib (custom jar placed here)
      - pom.xml (parent pom)
    
        <repositories>
            <repository>
                <id>in-project</id>
                <name>In Project Repo</name>
                <url>file://${project.parent.basedir}/lib</url>
            </repository>
        </repositories>
    

    在从J·土拨鼠那里得到提示后,我能够从中找到答案

    从3.0.4开始,
    ${parent.basedir}
    不再可用,因此child中的pom.xml需要如下,以便能够引用父项目目录:

    <main.basedir>${project.basedir}${file.separator}..</main.basedir>
    
    ${project.basedir}${file.separator}。。
    
    您的子回购协议是否有自己的pom.xml?也许您可以在其中指定文件://${project.parent.basedir}/lib。另外,为了澄清,您的意思是“app repo/lib”(不是app repo/lib)?是的,每个子模块都有自己的pom.xml。让我试试这个。开始使用存储库管理器,将所需的jar放在那里,而不是放在lib目录中。。。在与Maven的关系中,它违背了Maven的基础。
    <main.basedir>${project.basedir}${file.separator}..</main.basedir>