繁体   English   中英

战争项目依赖于maven

[英]war project dependency in maven

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

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

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

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

<attachClasses>true</attachClasses>

你会得到一个带有以下坐标的补充神器:

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

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

在你的战争项目中

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

希望能帮助到你...

依赖关系使用jar工作,你通常会在.jar文件中定义一个公共依赖项,可以被.war s访问。 这不是特定于Maven的,而是Java中的依赖关系如何工作。 .war的内部结构在类的布局方面与.jar不同。

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

你最好用你的项目中需要的war类创建一个jar

然后只需将依赖项添加到项目配置( 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>

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

  • 更快地测试。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM