战争项目依赖于maven

时间:2013-10-15 07:25:22

标签: java maven

我需要从war项目中访问一个bean类到我的另一个war项目中。 bean类存在于MyProject中。我写了另一个名为NewProject的项目的pom如下。

<groupId>MyProject</groupId>
    <artifactId>MyProject</artifactId>
    <version>1</version> 
</parent>
<artifactId>MyProject</artifactId>
<packaging>war</packaging>

是否可以在另一个战争项目中添加战争依赖?

5 个答案:

答案 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>

参考maven war plugin

希望它有所帮助...

答案 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并生成基于分类器的工件。但是,我认为我的建议更好,因为它可以让您清楚地分离代码并强制您更好地组织代码。