2017-05-26 204 views
1

我以下Maven项目结构:Maven的多模块项目与Spring引导模块

Project 1: 
--pom.xml 
Project 2: 
--pom.xml 
Project 3: 
--pom.xml 

即PROJECT1,Project2中和项目3是对彼此的目录结构和他们每个人是春天引导应用程序(JAR )。 我想将Project2和Project3作为Project1的子对象,而不更改目录结构。当我在Parent项目上执行相同的操作时,我需要在子项目中传递执行所有Maven命令。而且最重要的是,我应该能够将它们全部打包到单个JAR文件中。 我在Google上搜索过它,发现了Maven Assembly Plugin和Maven Shade Plugin,但这些似乎没有帮助我。 任何帮助将不胜感激。

回答

0

您可以为project1,project2和project3制作单独的罐子。将project2和project3作为依赖项添加到project1。将project1作为父项添加到project2和project3。相应的pom文件可能如下所示。

项目1:

<?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.stackoverflow</groupId> 
    <artifactId>project1</artifactId> 
    <name>${project.artifactId}</name> 
    <packaging>pom</packaging> 
    <version>1.0.0-SNAPSHOT</version> 

    <modules> 
     <module>project3</module> 
     <module>project2</module> 
    </modules> 
</project> 

Project2的:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <artifactId>project1</artifactId> 
     <groupId>com.stackoverflow</groupId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 

    <groupId>com.stackoverflow</groupId> 
    <artifactId>project2</artifactId> 
    <name>${project.artifactId}</name> 
    <url>http://maven.apache.org</url> 

</project> 

项目3:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <artifactId>project1</artifactId> 
     <groupId>com.stackoverflow</groupId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 

    <groupId>com.stackoverflow</groupId> 
    <artifactId>project2</artifactId> 
    <name>${project.artifactId}</name> 
    <url>http://maven.apache.org</url> 

</project> 

我不知道你为什么会想一切到一个罐子下包装。如果你按照上面的配置,所有东西都会被打包到project1中。这基本上和一切都包装在一个jar下一样。