我是maven的新手.
我有一个Java EE Web项目和一个模型项目,Web项目依赖于模型,因为模块有一些标准的类,需要在web中使用jar.
网络需要模型jar文件.
我怎么能写出一个依赖另一个项目的2个项目?
给我一个项目pom的样本编码.
典型的maven多模块项目结构将涉及3个模块:聚合父模块(允许在所有模块上启动多模块构建),模型模块和Web模块.像这样的东西:
. ??? mymodule ? ??? pom.xml ? ??? src ? ??? main ? ? ??? java ? ? ??? resources ? ??? test ? ??? java ? ??? resources ??? mywebapp ? ??? pom.xml ? ??? src ? ??? main ? ??? resources ? ??? webapp ? ??? index.jsp ? ??? WEB-INF ? ??? web.xml ??? pom.xml
父母pom.xml(在根)的位置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q4176120</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Q4176120 - Parent POM</name>
<url>http://maven.apache.org</url>
<dependencies>
...
</dependencies>
<modules>
<module>mywebapp</module>
<module>mymodule</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
这mymodule/pom.xml将是一个普通的POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>Q4176120</artifactId>
<groupId>com.stackoverflow</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!--groupId>com.stackoverflow</groupId--> <!-- inherited -->
<artifactId>mymodule</artifactId>
<packaging>jar</packaging>
<name>Q4176120 - Module</name>
<dependencies>
...
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
而且mywebapp/pom.xml将宣布对MyModule的神器的依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>Q4176120</artifactId>
<groupId>com.stackoverflow</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!--groupId>com.stackoverflow</groupId--> <!-- inherited -->
<artifactId>mywebapp</artifactId>
<packaging>war</packaging>
<name>Q4176120 - Maven Webapp</name>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mymodule</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>Q4176120</finalName>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
使用此结构,您可以从父目录启动多模块构建,即在所有模块上运行目标(并且maven将计算正确的构建顺序):
$ mvn install [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] Q4176120 Parent POM [INFO] Q4176120 Module [INFO] Q4176120 Maven Webapp [INFO] ...
请注意,我还在上面的示例中使用了继承(mymodule并从元素中声明的父级mywebapp 继承<parent>),以便我可以对父POM中的公共部分进行分组,避免重复.这不是强制性的,您可以使用聚合而不继承,但这非常方便,聚合和继承通常在实践中结合在一起.
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |