maven在Eclipse中构建依赖项,多个项目

时间:2010-11-16 18:47:23

标签: java eclipse maven-2 m2eclipse

我在eclipse中有两个项目,两个都是maven控制的。参考文献B和它们在平面系统上。我们目前设置的是我们必须在B上构建 - 在系统上生成jar,并且A引用jar。

我想改变这一点,我们只需要构建A,它会自动构建B吗?我可以在Maven / eclipse中这样做,这样我就不必创建更高级的项目吗?

我已经研究了一些maven文档 - 但他们真的很困惑我:)。谢谢你的帮助。

pom看起来像这样

(B)

    <project xmlns="..." xmlns:xsi="..."
 xsi:schemaLocation="...">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.thetus</groupId>
 <artifactId>irisMDK</artifactId>
 <packaging>jar</packaging>
 <name>irisMDK</name>
 <version>0.1</version>
 <url>...maven.apache...</url>
 <build>
  <sourceDirectory>java/src/main</sourceDirectory>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.1</version>
    <configuration>
     <source>1.6</source>
     <target>1.6</target>
     <testExcludes>
      <exclude>**/*.java</exclude>
     </testExcludes>
    </configuration>
   </plugin>
  </plugins>
  <resources>
   <resource>
    <directory>java/src/main</directory>
   </resource>
  </resources>
 </build>
 <dependencies>
  ...
 </dependencies>
</project>

------和(A):

 <project xmlns="..." xmlns:xsi="..."
 xsi:schemaLocation="...">
 <modelVersion>4.0.0</modelVersion>
 <groupId>local.b</groupId>
 <artifactId>projectB</artifactId>
 <packaging>jar</packaging>
 <name>B</name>
 <version>RELEASE</version>
 <url>...</url>
 <repositories>
  <repository>
   <id>maven2-repository.dev.java.net</id>
   <name>Java.net Repository for Maven</name>
   <url>...download.java.net/maven...</url>
  </repository>
 </repositories>
 <build>
  <plugins>
                   ...
  </plugins>
  <sourceDirectory>java/src/main</sourceDirectory>
  <testSourceDirectory>java/src/test</testSourceDirectory>
  <resources>
  </resources>
 </build>
 <dependencies>
  <dependency>
   <groupId>local.b</groupId>
   <artifactId>projectB</artifactId>
   <scope>system</scope>
   <version>RELEASE</version>
   <systemPath>${basedir}/../B/target/B-0.1.jar</systemPath>
  </dependency>
 ...
 </dependencies>
 <reporting>
  ...
 </reporting>
</project>

如果你能告诉我一个如何改变^^^的例子,我将非常感激!

2 个答案:

答案 0 :(得分:4)

原始答案: M2Eclipse插件,如果您尚未使用它,则允许您执行此操作。安装后,删除

<systemPath>${basedir}/../B/target/B-0.1.jar</systemPath>

从A的pom.xml中确保groupid,artifactid,version与B的pom.xml中定义的匹配

然后右键单击项目,Maven-&gt;启用依赖关系解析。现在,构建应该查看B的本地项目

编辑:

如果B的pom.xml看起来像这样(来自你的例子):

<project xmlns="..." xmlns:xsi="..."
      xsi:schemaLocation="...">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.thetus</groupId>
      <artifactId>irisMDK</artifactId>
      <packaging>jar</packaging>
      <name>irisMDK</name>
      <version>0.1</version>

      ...
 </project>

在A的pom(取决于项目B)中,您的依赖关系应如下所示:

<project>
...
    <dependencies>
      <!--Attributes of project that this project is dependent upon, as defined in that projects POM -->
      <dependency>
           <groupId>com.thetus</groupId>
           <artifactId>irisMDK</artifactId>
           <version>0.1</version>
      </dependency>
 ...
     </dependencies>
....
</project>

这将告诉maven和eclipse项目A明确依赖于项目B的那个版本。使用M2Eclipse,如果你的工作区中有匹配的groupId,artifactId和版本,并且启用了“依赖性解析”,项目B的内容将自动构建并包含在项目A中。

此外,在eclipse中打开Maven控制台(控制台视图 - &gt;新控制台下拉菜单 - >新的maven控制台)可以帮助调试项目A没有选择项目B的原因。

答案 1 :(得分:3)

听起来你想要使用多模块项目,here是一个简单的教程。您将创建父POM,并将A和B都作为子项,A保持其对B的依赖。