Maven 对 Web 应用程序的依赖

Maven dependency on web application

我的 Eclipse 项目结构如下:

my.core.webapp pom:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.company</groupId>
    <artifactId>my.core.webapp</artifactId>
    <version>1</version>
    <packaging>war</packaging>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    .
    </dependencies>
</project>

my.extended.webapp pom:

<dependency>
    <groupId>my.company</groupId>
    <artifactId>my.core.webapp</artifactId>
    <version>1</version>
    <type>war</type>
</dependency>

当我用 Maven 编译时,我得到各种 package xyz does not exist 异常。

有没有办法(无需第三个项目或使用模块)实现该目标?

你必须在这里做两件事。

第一件事是将 <attachClasses>true</attachClasses> 添加到 my.core.webapp pom.xml 中的 Maven war 插件配置中。所以现在它应该看起来像

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <attachClasses>true</attachClasses>
        <warSourceDirectory>WebContent</warSourceDirectory>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

第二件事是在您将 my.core.webpp 指定为 my.extendend.webapp pom.xml 中的依赖项时添加 <classifier>classes</classifier>。所以它现在应该看起来像

<dependency>
    <groupId>my.company</groupId>
    <artifactId>my.core.webapp</artifactId>
    <version>1</version>
    <type>war</type>
    <classifier>classes</classifier>
</dependency>

应该就这些了。

我根据@ritz-xavi 的回答成功解决了问题。

my.core.webapp pom:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <attachClasses>true</attachClasses>
        <webXml>${basedir}/WebContent/WEB-INF/web.xml</webXml>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

my.extended.webapp pom:

<dependency>
    <groupId>my.company</groupId>
    <artifactId>my.core.webapp</artifactId>
    <version>1</version>
    <classifier>classes</classifier>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>my.company</groupId>
    <artifactId>my.core.webapp</artifactId>
    <version>1</version>
    <type>war</type>
</dependency>

包括 war 和 jar 类 就成功了。