我需要从war项目中访问一个bean类到我的另一个war项目中。 bean类存在于MyProject中。我写了另一个名为NewProject的项目的pom如下。
<groupId>MyProject</groupId>
<artifactId>MyProject</artifactId>
<version>1</version>
</parent>
<artifactId>MyProject</artifactId>
<packaging>war</packaging>
是否可以在另一个战争项目中添加战争依赖?
答案 0 :(得分:17)
如果使用以下属性配置maven-war-plugin:
<attachClasses>true</attachClasses>
你会得到一个带有以下坐标的补充神器:
<dependency>
<groupId>myGroup</groupId>
<artifactId>myArtifact</artifactId>
<version>myVersion</myVersion>
<classifier>classes</classifier>
</dependency>
包含war项目中的所有类,可以用作依赖项,这是一个可以解决问题的jar文件。
答案 1 :(得分:4)
在你的战争项目中
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration></plugin>
它创建了一个可以在所需项目中使用的类工件
<dependency>
<groupId>your-group-id</groupId>
<artifactId>your-artifact-id</artifactId>
<version>your-version</version>
<classifier>classes</classifier>
希望它有所帮助...
答案 2 :(得分:2)
依赖关系使用jar工作,你通常会在.jar
文件中定义一个可由.war
访问的公共依赖项。这不是特定于Maven的,而是Java中的依赖关系如何工作。根据类的布局方式,.war
的内部结构与.jar不同。
因此,在Maven中,我希望根据初始项目定义一个.jar
项目,然后定义两个.war
项目。
答案 3 :(得分:2)
恕我直言,您最好使用项目中需要的jar
课程创建war
。
然后只需将依赖项添加到项目配置(classifier
类)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>classes</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>classes</classifier>
</configuration>
</execution>
</executions>
</plugin>
答案 4 :(得分:2)
将可重复使用的类移动到单独的模块中。这将有所帮助:
更快地测试。
将代码用作其他项目中的依赖项。
或者,您可以使用maven-jar-plugin
生成仅使用jar的jar并生成基于分类器的工件。但是,我认为我的建议更好,因为它可以让您清楚地分离代码并强制您更好地组织代码。