我在使用 Maven 设置项目时遇到问题。我总是得到那个项目必须是pom或者缺少jar包。所以这就是我想做的:
我有一个主项目,其中包含用于 Web 的 web-inf 文件夹,如果我将其导出为 war,则可以在 tomcat 上运行:
<groupId>com.example</groupId> <artifactId>main</artifactId> <packaging>jar</packaging> <version>0.0.1-SNAPSHOT</version>
我有一个具有主要依赖项的模块项目,因此我可以使用主项目中的所有库,但将用作主项目的扩展。我计划有多个这样的模块:
<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>
我计划创建一个可部署项目的第三个项目,该项目仅包含主项目和我想要在 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/