我有一个maven项目'a',它构建了一个简单的库。项目有一个额外的源文件夹,可以通过指定命名的配置文件来选择包含该文件夹。这将做两件事:
添加此附加源所需的依赖项,否则不需要
<profile>
<id>special</id>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>dependency</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</profile>
还有一个转折点。我无法保证附加依赖项始终可用。这意味着我不能将它列为始终包含的依赖项,因为在某些情况下它无法解析,因此构建将失败。因此,我只想在明确激活配置文件时包含此依赖项。
随后,我有另一个项目'b',它有'a'作为依赖项。我希望项目'b'与'a'是使用常规配置文件还是特殊配置文件构建无关。项目'b'使用maven-dependency-plugin将依赖项复制到文件夹:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
如果项目'a'是使用特殊配置文件构建的,那么确保项目'b'复制附加依赖项的最简单方法是什么,但不是这样?我可以对我想要的项目'a'进行任何修改,但除非必要,否则不希望对项目'b'进行修改。
按照目前的情况,将附加依赖项指定为配置文件的一部分,maven永远不会将其作为复制依赖项的一部分包含在内 - 无论我使用哪个配置文件进行项目a。最后,如果我运行项目b并使用特殊配置文件构建项目a,我会得到一个ClassNotFoundException。
如果需要,我会澄清这个例子。提前谢谢!