Maven对Web应用程序的依赖

时间:2016-10-25 11:22:28

标签: maven web-applications maven-3 war

我的Eclipse项目结构如下:

  • my.core.webapp(libs,java classes,web.xml等)
  • my.extended.webapp(libs,java classes AND 依赖于 my.core.webapp

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编译时,我得到了各种包,xyz不存在例外。

有没有办法(没有第3个项目或使用模块)来实现这个目标?

2 个答案:

答案 0 :(得分:0)

你必须在这做两件事。

首先,将<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.extendend.webapp pom.xml中指定my.core.webpp作为依赖项时,要做的第二件事是添加<classifier>classes</classifier>。所以现在看起来应该是

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

应该是全部。

答案 1 :(得分:0)

我设法根据@ 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>

包括战争和jar类都可以解决问题。