我有两个mavenized项目
早些时候,在对两个项目进行整合之前,我在Project_B中有Project_A的refrence(buildpath)。 现在我用maven2配置了两个项目。我的问题是,如何在Project_B中添加Project_A的引用,以便Project_B的WAR可以运行
到目前为止,我已经尝试了以下似乎有效的代码块,但是在运行时Project_B的WAR在applicationContext中抛出异常,无法启动Project_A类的实例。
1- Project_A被清理并安装在名为“myproject-1.0.jar”的本地存储库中 其中build snippet(Project_A的POM)如下#
已编辑的部分
<modelVersion>4.0.0</modelVersion>
<groupId>org.myurl<groupId>
<artifactId>projectA</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>${project.artifactId}-${project.version}</name>
build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
<testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>${basedir}/src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<optimize>true</optimize>
</configuration>
</plugin>
</plugins>
</build>
Project_B的POM片段,我在其中添加已安装的Project_A jar
<dependency>
<groupId>org.myurl</groupId>
<artifactId>projectA</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
提前感谢您的建议。
答案: 实际上maven没有任何问题。 POM中的上述配置绝对正确。我在/ Resources下移动了属性文件,后来我忘了更改使用属性文件的那些路径。
然而,我感谢 Dolphin 和Nicola Musatti 的建议。
答案 0 :(得分:0)
你很好,pom片段很好你现在需要做的是制作父项目(Maven Reactor)。因此,您将创建新项目并在该项目中定义模块(项目A和项目B)。您将在项目A和项目B中引用该父项,这将起到作用。谷歌maven父母看看它是如何完成的。
在构建项目B之后,maven将首先构建项目A并在项目B之后。
你的方法也应该起作用(只是它不是一种正确的方法)。所以你可能在groupId版本中犯了错误。您可以通过构建项目A然后检查本地maven存储库来检查这一点。如果没有出错,你应该看到文件夹结构。
组织/ myurl /了projectA-1.0.jar
项目结构如下:
项目亲 项目一 项目-B
在您定义的项目父级中:
<groupId>foo.bar</groupId>
<artifactId>project-parent</artifactId>
<version>00.01-SNAPSHOT</version>
<name>FooBar:: Parent Project</name>
<packaging>pom</packaging>
<modules>
<module>../project-a</module>
<module>../project-b</module>
</modules>
在项目-a和项目-b中添加:
<parent>
<groupId>foo.bar</groupId>
<artifactId>project-parent</artifactId>
<version>00.01-SNAPSHOT</version>
</parent>
在project-b中,您将引用project-a
<dependency>
<groupId>foo.bar</groupId>
<artifactId>project-a</artifactId>
<version>00.01-SNAPSHOT</version>
</dependency>
构建父级后,它应该正确构建所有模块。不要使用插件,忘了我说Maven Reactor:)