我刚刚想到了maven的依赖系统,我问自己,是否有可能依赖Web应用程序(* .war文件)? 我想将应用程序的核心模块维护为普通的Web应用程序。更具体的实现将使用核心作为依赖并扩展它。
例如,我有以下内容:
具体项目现在应该依赖于Core.war并包括所有网页,其他资源,源文件等,但如果在上下文路径中存在具有相同名称的文件,则具体项目应该覆盖原始的。如果有可能合并这些文件会更好!试想一下,例如一个日志配置文件,它将与自定义配置文件合并,以便为客户端进行特殊处理。还有许多其他用例会非常有用。
有人能给我一些提示,告诉我在构建过程中如何处理这样的行为吗?
答案 0 :(得分:2)
你需要这些内容......
假设你有两个模块 - 核心和web-module1,你需要在战争中将它们组装起来。
核心的POM:
<project>
<groupId>com.foo</groupId>
<artifactId>core</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archiveClasses>false</archiveClasses>
<webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>
<webappDirectory>${project.build.directory}/mywebapp</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
模块的POM取决于核心:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>web-module1</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<overlays>
<overlay>
<excludes>
<exclude>**/web.xml</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
<type>war</type>
</dependency>
</dependencies>
</project>
集会:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>web-assembly</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archiveClasses>false</archiveClasses>
<webXml>${basedir}/src/main/webapp/WEB-INF/web.xml</webXml>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/WEB-INF</directory>
<includes>
<include>*.xml</include>
</includes>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
<webappDirectory>${project.build.directory}/mywebapp</webappDirectory>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<overlays>
<overlay>
<excludes>
<exclude>**/web.xml</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.foo</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.foo</groupId>
<artifactId>web-module1</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
</project>