我有一个 maven 项目,其中父模块有一个 lib 目录,其中包含编译所需的各种 jar,但不包含在最终产品中。当我尝试让子模块构建时,它失败了。它说“无法解析以下工件”,然后最终说“在 C:\path\to\project\modules\module_name\lib\local_dependency.jar 找不到工件 local_dependency”。
子模块不依赖于父模块使用的库,但它仍然希望包含它们。我需要设置一个选项来防止这种情况吗?
父 Pom 片段:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<currentVersion>1.0.0</currentVersion>
</properties>
<groupId>com.project</groupId>
<artifactId>project_artifact</artifactId>
<packaging>pom</packaging>
<version>${currentVersion}</version>
<modules>
<module>modules/module_name</module>
</modules>
<dependencies>
<dependency>
<groupId>group.id</groupId>
<artifactId>local_dependency</artifactId>
<version>1.0</version>
<systemPath>${basedir}/lib/local_dependency.jar</systemPath>
<scope>system</scope>
<optional>true</optional>
</dependency>
</dependencies>
子 pom 片段:
<parent>
<groupId>com.project</groupId>
<artifactId>project_artifact</artifactId>
<version>${currentVersion}</version>
<relativePath>../../</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>net.some.dependency</groupId>
<artifactId>artifact_name</artifactId>
<version>1.0.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.project</groupId> <!-- The child depends on the parent for the parent's API-->
<artifactId>project_artifact</artifactId>
<version>${currentVersion}</version>
<type>jar</type>
</depdencency>
</dependencies>
因此,子 pom 将尝试从 project_base/modules/module_name/lib/local_dependency.jar 包含 group.id:local_dependency 但它不存在,也不需要存在。