我在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>
如果你能告诉我一个如何改变^^^的例子,我将非常感激!
答案 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的依赖。