我在使用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包装。
答案 0 :(得分:1)
我有大致相同的情况3 modules
其中一个是deploy-able
并且所有3个模块都包含在一个项目中
所以我用4 .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>
<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>
<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>
<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
我希望它有用;