java - java tomcat应用程序的Maven项目配置

标签 java maven maven-2

我在使用 Maven 设置项目时遇到问题。我总是得到那个项目必须是pom或者缺少jar包。所以这就是我想做的:

  1. 我有一个主项目,其中包含用于 Web 的 web-inf 文件夹,如果我将其导出为 war,则可以在 tomcat 上运行:

    <groupId>com.example</groupId>
    <artifactId>main</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    
  2. 我有一个具有主要依赖项的模块项目,因此我可以使用主项目中的所有库,但将用作主项目的扩展。我计划有多个这样的模块:

    <groupId>com.example.modules</groupId>
    <artifactId>module-blogging</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>module-blogging</name>
    
    <parent>
        <groupId>com.example</groupId>
        <artifactId>main</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    
  3. 我计划创建一个可部署项目的第三个项目,该项目仅包含主项目和我想要在 war 文件中部署的模块。

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    

这件事用 Maven 可以实现吗?因为我总是发现我的项目缺少一些jar依赖项,或者聚合项目不能有war打包。

最佳答案

我有大致相同的场景3个模块其中一个是可部署 一个项目中包含所有 3 个模块

所以我通过4个.pom文件配置它,如下

main-project.pom

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.#####</groupId>
    <artifactId>#########</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>########</name>



<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.6</maven.compiler.source>
        <maven.compiler.target>1.6</maven.compiler.target>
        <maven.test.skip>true</maven.test.skip>         
        <###########.version>0.0.1-SNAPSHOT</##########.version>
    </properties>



<modules>
        <module>#########-web</module>
        <module>#########-commons</module>
        <module>#########-services</module>
    </modules>

</project>

commons-module.pom

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>############</artifactId>
        <groupId>com.#####</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>###########-commons</artifactId>
    <packaging>jar</packaging>


    <dependencies>

ur own depends

    </dependencies>
</project>

服务模块.pom

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>#######</artifactId>
        <groupId>com.########</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
ur depends
    </dependencies>

    <artifactId>########-services</artifactId>
    <packaging>jar</packaging>
</project>

web-module.pom

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.#########</groupId>
        <artifactId>##########</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>#########-web</artifactId>
    <packaging>war</packaging>
    <name>############</name>
    <url>http://##########.com</url>

    <dependencies>
UR DEPENDS
    </dependencies>

    <build>
        <finalName>##############</finalName>
        <outputDirectory>target/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.8</version>
                <configuration>
                    <version>5</version>
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
                    <unpackTypes>war</unpackTypes>
                </configuration>
            </plugin>

            <!-- configure war plugin to skip webxml -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <!-- jetty plugin -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>8.1.15.v20140411</version>
            </plugin>
        </plugins>

    </build>

更新

你的项目结构将是这样的:

main-project
    |
    ----commons-module
    |
    ----services-module
    | 
    ----web-module

构建和部署项目

我使用jetty进行部署

你可以在web-module pom中看到它的插件

在项目根目录运行该命令来构建项目并生成 war 文件 mvn clean install

然后将目录更改为 Web 模块并运行以下命令来部署 war 文件 mvn jetty:run

希望对您有帮助;

关于java - java tomcat应用程序的Maven项目配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277803/

相关文章:

java - 如何分割字符串并存储到变量中以供将来使用?

java - AspectJ 建议未通过单元测试执行

android - IDE 无法打开库依赖对话框(Maven 依赖)

java - Maven:传递-循环依赖-发布流程

java - 默认情况下可以使用什么范围来使依赖项成为非传递性?

java - 如何从数组中生成随机数

Java - 列表、类型和继承(也许是通用的?)

java - 如何检测激活了哪些 Maven 配置文件?

java - 在子请求中调用子资源方法?

java - GWT 2.6 - Java 6 冲突