在多模块项目中构建可部署的jar

时间:2019-01-18 08:18:53

标签: maven spring-boot

我的项目结构如下:

parent/
  server/    - Spring Boot Application
    pom.xml
  client-1/  - Angular Web Application
    pom.xml
  client-2/  - Angular Web Application
    pom.xml
  pom.xml

我能够在Spring Boot Application是jar的情况下构建此应用程序,它的static/文件夹中包含两个Angular客户端。

但是,当前Spring Boot应用程序的pom.xml必须了解客户端,我想将其移至父级。

这里我缺少一些Maven技能。


这应该发生:

  1. 构建Web客户端
  2. 构建Spring Boot应用程序
  3. 将网络客户端复制到static/

我当前正在使用maven-resources-plugin复制客户端内容,但我注意到存在问题-如果尚未构建客户端,则它将不会复制任何内容到最终的jar中,这意味着Web客户端缺少部署。

现在,这是父级的pom.xml

<?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>

    <groupId>mz</groupId>
    <artifactId>mz-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>mz-server</module>
        <module>mz-admin</module>
        <module>mz-web</module>
    </modules>

</project>

我该怎么做?


以下是我目前使用jar构建maven-resources-plugin的方式。但是如上所述,在这种情况下,服务器项目必须了解客户端,这也不能保证客户端首先得到构建。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals><goal>copy-resources</goal></goals>
            <configuration>
                <outputDirectory>${build.directory}/classes/static/</outputDirectory >
                <resources>
                    <resource>
                        <directory>../mz-admin/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
        <execution>
            <id>copy-web</id>
            <phase>validate</phase>
            <goals><goal>copy-resources</goal></goals>
            <configuration>
                <outputDirectory>${build.directory}/classes/static/</outputDirectory >
                <resources>
                    <resource>
                        <directory>../mz-web/dist</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

1 个答案:

答案 0 :(得分:0)

client-1client-2添加为对server项目的依赖。这样可以确保在服务器和文件可用之前就已经建立了客户端。