web-applications - Maven 对 Web 应用程序的依赖

标签 web-applications maven dependencies

我想到了maven的依赖系统,我问自己,是否可以依赖一个web应用程序(*.war文件)? 我想将应用程序的核心模块维护为普通的 Web 应用程序。更具体的实现将使用核心作为依赖并扩展它。

例如,我有以下内容:

  1. Core.war//后端
  2. ConcreteProject1.war//客户 1 的前端
  3. ConcreteProject2.war//客户 2 的前端

具体项目现在应该依赖于 Core.war 并包括所有网页、其他资源、源文件等,但如果在上下文路径中存在同名文件,则具体项目应该覆盖原来的。如果可以合并这样的文件就更好了!想想例如一个日志配置文件,该文件将与自定义文件合并以对客户端进行特殊处理。还有许多其他用例,它会非常有用。

谁能给我一些提示,告诉我如何在我的构建过程中获得这种行为?

最佳答案

你需要这些方面的东西......

假设您有两个模块 - core 和 web-module1,并且您最终需要在 war 中组装它们。

核心的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>

关于web-applications - Maven 对 Web 应用程序的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532191/

相关文章:

java - 什么样的Web应用程序对诸如Strut,Grail,Play之类的每个框架都有好处?

java - 使用 JaCoCO 时测试失败

javascript - ExtJS 4 到 ExtJS 5 的迁移

python - 如何在重定向后及早关闭 GAE 上的 Python Web 应用程序?

java - 为什么google-api-client依赖guava-jdk5?

spring - 如何确定实际使用了哪些 JAR?

Java - 加载类路径之外的类。有什么选择

maven - 由于 Maven 依赖关系,尝试运行新的 grails 项目失败

python - 管理 django 请求类型的最佳方法是什么?

java - 前端 (HTML) 未从 Microsoft Azure 中的 mysql 数据库获取 Spring Boot 应用程序中的数据