Maven 对 Web 应用程序的依赖
Maven dependency on web application
我的 Eclipse 项目结构如下:
- my.core.webapp(库,java 类,web.xml,等)
- my.extended.webapp (libs, java 类 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 编译时,我得到各种 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 类 就成功了。
我的 Eclipse 项目结构如下:
- my.core.webapp(库,java 类,web.xml,等)
- my.extended.webapp (libs, java 类 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 编译时,我得到各种 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 类 就成功了。