Eclipse Maven运行时依赖项和配置文件

时间:2011-10-06 10:17:05

标签: eclipse maven-2 maven-3

我试图了解maven个人资料并遇到了以下问题。

这是我的简化示例,我有两个maven项目,项目A和项目B.

项目A对项目B具有编译时maven依赖性。

当maven配置文件“TEST”处于活动状态时,

项目B包含运行时依赖项(比如项目C)。

所以问题是我运行项目A时生成的类路径。它没有项目C,即使项目A的TEST配置文件是活动的。

这是使用eclipse Helios服务版本1,Maven Integration for Eclipse插件vrs 0.10.2.20100623-1649

任何想法?

3 个答案:

答案 0 :(得分:0)

我不确定配置文件是处理TEST的最佳方式。

使用配置文件更改依赖关系将更改生成的项目的POM。 如果在激活TEST的情况下安装Project B,则将添加运行时依赖项。 (无论什么项目A简介)。

传递性不会添加可选的依赖项。您需要在项目A中添加依赖项。

答案 1 :(得分:0)

我刚在Eclipse中使用m2eclipse 0.12.x进行了测试。第二个项目pom.xml如下所示:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>test2</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <profiles>
    <profile>
      <id>TEST</id>
      <dependencies>
        <dependency>
          <groupId>org.test</groupId>
          <artifactId>test1</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>

然后我在项目属性对话框中将配置文件TEST设置为Maven面板上的活动状态,并确保在那里启用Workspace的依赖关系解析。

之后,您可以从test2项目的src/main/java运行任何类,生成的类路径如下所示:

C:\Dev\Java1.6\bin\javaw.exe -Dfile.encoding=Cp1252 
   -classpath C:\Dev\Workspace\test2\target\classes;C:\Dev\Workspace\test1\target\classes org.test2.Test2

请注意,运行时作用域的依赖关系仅适用于Eclipse中的“Java Application”启动配置类型,但不适用于“JUnit”启动配置,它使用m2eclipse的JDT集成提供的不同类路径解析器。

答案 2 :(得分:0)

似乎依赖项目的配置文件中的依赖项(传递)不会给依赖于它们的人提供运行时依赖性,这看起来很奇怪。

解决方法是将配置文件(包含依赖项)添加到父级,然后子级继承依赖项。

即。将一个父母介绍给A,我可以将它们直接放在A中,如YMomb所建议的那样。但是我需要解决这个问题的继承方面因为我有很多项目为。