Java 如何添加Mavenized项目的引用
我有两个专业化的项目Java 如何添加Mavenized项目的引用,java,spring,jakarta-ee,maven-2,maven,Java,Spring,Jakarta Ee,Maven 2,Maven,我有两个专业化的项目 项目A:Java项目 项目B:javaweb项目 早些时候,在对这两个项目进行mavenize之前,我在Project_B中引用了Project_A(buildpath)。 现在我已经用maven2配置了这两个项目。我的问题是,我如何在项目B中添加项目a的引用,以使项目B的战争能够运行 到目前为止,我已经尝试了以下代码块,这些代码看起来很有效,但是在运行时Project_B的WAR中,在applicationContext中抛出了一个异常,Project_A的类的实例无法启
<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>
4.0.0
org.myurl
项目A
1
罐子
${project.artifactId}-${project.version}
构建>
${basedir}/src/main/java
${basedir}/target/classes
${basedir}/src/test/java
${basedir}/target/test类
${basedir}/src/main/resources
${basedir}/src/test/resources
maven编译器插件
1.6
1.6
符合事实的
<dependency>
<groupId>org.myurl</groupId>
<artifactId>projectA</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
org.myurl
项目A
1
编写
尽管如此,我还是要感谢Dolphin和Nicola Musatti提出的建议。你们走得很好,pom片段很好,你们现在需要做的是创建父项目(Maven反应堆)。所以,您将创建新项目,并在该项目中定义模块(项目A和项目B)。您将在项目A和项目B中引用该父级,这样就可以了。谷歌maven家长看看它是如何做到的 在构建项目B之后,maven将首先构建项目A,然后构建项目B 问题是你的方法也应该有效(只是这不是一个正确的方法)。所以,可能您在groupId版本中犯了错误。您可以通过构建项目A,然后检查本地maven存储库来检查这一点。在它里面,如果没有出现问题,您应该可以看到文件夹结构 org/myurl/projectA-1.0.jar 项目结构如下: 项目父级 项目a 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>
foo.bar
项目父级
00.01-00
FooBar::父项目
聚甲醛
../project-a
../project-b
在项目a和项目b中添加:
<parent>
<groupId>foo.bar</groupId>
<artifactId>project-parent</artifactId>
<version>00.01-SNAPSHOT</version>
</parent>
美食酒吧
项目父级
00.01-00
在项目b中,您将参考项目a
<dependency>
<groupId>foo.bar</groupId>
<artifactId>project-a</artifactId>
<version>00.01-SNAPSHOT</version>
</dependency>
美食酒吧
项目a
00.01-00
构建父模块后,它应正确构建所有模块。不要使用plugin,忘了我说过的Maven Reactor:)听起来可能问题在于生成的projectb war中没有包含projecta中的类?是吗?如果我浏览jboss服务器的deploy文件夹,我可以很容易地找到所有生成的Project_A WEB_INF类和Project_B的Webappi。我编辑了Project_A的pom片段,在我本地的maven存储库下,我可以看到projectA-1.0。jari在谷歌上搜索过,但无法选择如何使用它。到目前为止,我已经尝试将maven maven reactor插件放在1.0中。在那之后,我尝试安装mvn,但war仍然不能正常运行。此外,我正在使用myeclipse。我们非常感谢您的进一步帮助好的,我将在我的回答中添加一个例子。下面是解释:大多数reactor插件特性现在都是本机支持的(自Maven 2.1.0以来)。所以,当您处理父/模块关系时,您使用的是maven reactor模式,这里使用的实际上是聚合器,而不是父项目。不幸的是,这些是不同的概念,即使官方文件在这个问题上有误导性。聚合通过reactor帮助同时构建项目,而父项目的目的是在相关项目之间共享设置。project-a和project-b不需要将project-parent指定为它们的父项,这样做实际上是个坏主意。