10

我需要将一个 bean 类从战争项目访问到我的另一个战争项目。bean 类存在于 MyProject 中。我编写了另一个名为 NewProject 的项目的 pom,如下所示。

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

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

4

5 回答 5

20

如果您使用以下属性配置maven-war-plugin :

<attachClasses>true</attachClasses>

您将获得具有以下坐标的补充工件:

<dependency>
  <groupId>myGroup</groupId>
  <artifactId>myArtifact</artifactId>
  <version>myVersion</myVersion>
 <classifier>classes</classifier>
</dependency>

它包含您的战争项目中的所有类,这些类可以用作依赖项,这是一个可以解决您的问题的 jar 文件。

于 2013-10-15T08:18:11.253 回答
5

在你的战争项目中

<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 战争插件

希望能帮助到你...

于 2013-10-15T08:58:05.833 回答
2

依赖项使用 jars 工作,您通常会在一个.jar文件中定义一个公共依赖项,该文件可以由两个.wars 访问。这不是 Maven 特定的,而是 Java 中的依赖项如何工作。.war就类的布局方式而言,a 的内部结构与.jar 不同。

因此,在 Maven 中,我希望定义一个.jar项目,然后.war根据初始项目定义两个项目。

于 2013-10-15T07:29:16.230 回答
2

将您的可重用类移动到单独的模块中。这将有助于:

  • 更快地测试事物。

  • 将代码用作其他项目中的依赖项。

maven-jar-plugin或者,您可以通过使用并生成基于分类器的工件来生成仅类 jar 。但是,我认为我的建议更好,因为它可以让您清楚地分离代码并迫使您更好地组织代码。

于 2013-10-15T10:31:38.493 回答
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>
于 2013-10-15T08:42:47.927 回答