代码之家  ›  专栏  ›  技术社区  ›  Stefan Falk

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

  •  4
  • Stefan Falk  · 技术社区  · 6 年前

    我有这样的项目结构:

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

    我可以在Spring引导应用程序是 jar 其中包含两个角度客户端 static/ 文件夹。

    但是,目前Spring引导应用程序的 pom.xml 必须知道客户的情况,我想把这个转移到家长那里。

    不过,我在这里缺乏一些独行侠的技能。


    这就是应该发生的事情:

    1. 生成Web客户端
    2. 构建Spring引导应用程序
    3. 将Web客户端复制到 静态/

    我目前正在使用 maven-resources-plugin 要复制客户端内容,但我注意到存在一个问题-如果客户端尚未生成,那么它将不会将任何内容复制到最终版本中。 罐子 这意味着Web客户端在部署时丢失。

    现在,这是 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>
    

    我怎样才能做到这一点?


    以下是我目前正在构建的 罐子 使用 Maven资源插件 . 但是如前所述,在这种情况下,服务器项目必须了解客户机,而且这也不能保证客户机首先得到构建。

    <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 回复  |  直到 6 年前
        1
  •  0
  •   Trinopoty    6 年前

    加上你的 client-1 client-2 作为对你的依赖 server 项目。这将确保在服务器和文件可用之前构建客户机。