Maven-dependency-plugin不复制Maven特定于配置文件的依赖项

时间:2013-11-19 00:37:04

标签: maven dependencies profile maven-dependency-plugin

我有一个maven项目'a',它构建了一个简单的库。项目有一个额外的源文件夹,可以通过指定命名的配置文件来选择包含该文件夹。这将做两件事:

  • 在构建的jar中包含一个额外的源文件夹,否则不包括在内
  • 添加此附加源所需的依赖项,否则不需要

            <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。

如果需要,我会澄清这个例子。提前谢谢!

0 个答案:

没有答案