有了maven,有可能有一个顶级项目的包装类型是"war",它将构建自己及其所有依赖模块(打包为jar)并让build生成一个project.war文件?
我见过的大部分文档示例和其他示例经常使用包装类型为"pom"的顶级项目,该项目仅用于将模块绑定在一起.我可以避免这个吗?
所以基本上我需要的东西实际上就像声明一个<module>my-module</module>maven来构建一样,并且在同一个POM中,声明一个<dependency>...my-module's artifact...</dependency>需要构建的同一个模块.也许有人建议的插件?
更新:换句话说(为了简化问题):如果我有,project A并且project B在哪里project A依赖project B- 是否有一种方法可以让我执行构建project A并自动构建project B(并包含project B其依赖性 - 创建projectA.war,包含projectB.jar)?
Jig*_*shi 11
super_aardvark建议正确的方法但是,
对于要求我会建议以下结构它也是合适的和良好的结构:
Consedering ProjectA的project-webapp,ProjectB如project-core
您可以拥有以下结构:
你的大项目:
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.project</groupId>
<artifactId>project</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Project Repository System</name>
<description>Project Repository System R2</description>
<modules>
<module>project-core</module>
<module>project-webapp</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
您的WebApp项目:
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
<parent>
<groupId>com.mycompany.project</groupId>
<artifactId>project</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>project-webapp</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>Project Web Application</name>
<description>Project Repository</description>
<dependency>
<groupId>com.mycompany.project</groupId>
<artifactId>project-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</project>
Run Code Online (Sandbox Code Playgroud)
您的核心项目:
<project>
<parent>
<groupId>com.mycompany.project</groupId>
<artifactId>project</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>project-core</artifactId>
<version>2.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Project Core</name>
<description>ProjectCore</description>
</project>
Run Code Online (Sandbox Code Playgroud)
您的目录结构应如下所示:
-------Grand Parent.pom
|
|--------project-webapp
| |
| project-webapp.pom
|
| -------project-core.pom
|
project-core.pom
Run Code Online (Sandbox Code Playgroud)
从父pom执行mvn clean install它将构建web-app和核心项目
这不是顶级项目的真正含义.您的WAR项目具有依赖项,这些依赖项是运行"mvn package"时将包含在WAR(在WEB-INF/lib中)的工件(例如jar).您的WAR项目pom可以将顶级项目作为其父项,但它不应该是其依赖项的父项.您可能希望将该顶级项目作为WAR项目和WAR中依赖项的JAR项目的父项.
这在Maven 1,2或3中是不可能的.
我建议放弃这个想法,因为Maven的全部目的是强制执行标准化的开发过程.不要对抗结构,只需创建父POM模块并在其下创建WAR模块和其他依赖项.
| 归档时间: |
|
| 查看次数: |
16576 次 |
| 最近记录: |