同一配置文件上的Maven模块订单更改

同一配置文件上的Maven模块订单更改,maven,build,maven-profiles,Maven,Build,Maven Profiles,我有一个项目,它有3个pom文件和2个maven配置文件:prod和dev。问题是当我用cmd运行我的dev配置文件时 mvn clean install -Pdev 它按顺序构建项目: 后端 前端 当我使用prod profile构建项目时,它会按照以下顺序构建项目: 前端 后端 这是我想要的方式。但是当我运行cmd时 mvn clean install 它需要使用dev概要文件来构建项目,并按照以下顺序进行:1.frontend,2.backend 这就是问题所在,它改变了模块的顺序。

我有一个项目,它有3个pom文件和2个maven配置文件:prod和dev。问题是当我用cmd运行我的dev配置文件时

mvn clean install -Pdev 
它按顺序构建项目:

  • 后端
  • 前端
  • 当我使用prod profile构建项目时,它会按照以下顺序构建项目:

  • 前端
  • 后端
  • 这是我想要的方式。但是当我运行cmd时

    mvn clean install
    
    它需要使用dev概要文件来构建项目,并按照以下顺序进行:1.frontend,2.backend

    这就是问题所在,它改变了模块的顺序。下面是主要的pom.xml

    <groupId>com.main</groupId>
    <artifactId>Main</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Main</name>
    <description>Main Parent Project</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <modules>
        <module>backend</module>
        <module>frontend</module>
    </modules>
    
    com.main
    主要
    0.0.1-快照
    聚甲醛
    主要
    主要母项目
    org.springframework.boot
    spring启动程序父级
    1.5.2.1发布
    UTF-8
    后端
    前端
    
    下面是后端pom.xml

     <artifactId>backend</artifactId>
    <name>backend</name>
    <description>Backend Project</description>
    
    
    
    <parent>
        <groupId>com.main</groupId>
        <artifactId>Main</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    
    
    
    <dependencies>
     ...
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                    <profiles>${spring-profiles}</profiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>prod</build.profile.id>
                <profileActive>prod</profileActive>
            </properties>
                <dependencies>
                    <dependency>
                        <groupId>com.main</groupId>
                        <artifactId>frontend</artifactId>
                        <version>${project.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
        </profile>
    </profiles>
    
       <artifactId>frontend</artifactId>
    <name>frontend</name>
    <description>Frontend Project</description>
    
    <parent>
        <groupId>com.main</groupId>
        <artifactId>Main</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <build>
        <plugins>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.0</version>
                <configuration>
                    <workingDirectory>src/main/webapp</workingDirectory>
                    <nodeVersion>v6.0.0</nodeVersion>
                    <npmVersion>2.7.1</npmVersion>
                    <nodeDownloadRoot>https://nodejs.org/dist/</nodeDownloadRoot>
                    <npmDownloadRoot>https://registry.npmjs.org/npm/-/</npmDownloadRoot>
                </configuration>
                <executions>
                    <execution>
                        <id>install node and npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                    </execution>
                    <execution>
                        <id>npm install</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>npm rebuild node-sass</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
    
                        <configuration>
                            <arguments>rebuild node-sass</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>bower install</id>
                        <goals>
                            <goal>bower</goal>
                        </goals>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>gulp</id>
                        <goals>
                            <goal>gulp</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
    
                                <arguments>${gulpProfile}</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
                <gulpProfile>-d</gulpProfile>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <build.profile.id>prod</build.profile.id>
                <profileActive>prod</profileActive>
                <gulpProfile>-p</gulpProfile>
            </properties>
        </profile>
    </profiles>
    
    后端
    后端
    后端项目
    com.main
    主要
    0.0.1-快照
    ...
    org.springframework.boot
    springbootmaven插件
    真的
    ${spring profiles}
    发展
    真的
    发展
    发展
    戳
    真的
    戳
    戳
    com.main
    前端
    ${project.version}
    运行时
    
    这里是frontend pom.xml

     <artifactId>backend</artifactId>
    <name>backend</name>
    <description>Backend Project</description>
    
    
    
    <parent>
        <groupId>com.main</groupId>
        <artifactId>Main</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    
    
    
    <dependencies>
     ...
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                    <profiles>${spring-profiles}</profiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>prod</build.profile.id>
                <profileActive>prod</profileActive>
            </properties>
                <dependencies>
                    <dependency>
                        <groupId>com.main</groupId>
                        <artifactId>frontend</artifactId>
                        <version>${project.version}</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
        </profile>
    </profiles>
    
       <artifactId>frontend</artifactId>
    <name>frontend</name>
    <description>Frontend Project</description>
    
    <parent>
        <groupId>com.main</groupId>
        <artifactId>Main</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <build>
        <plugins>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.0</version>
                <configuration>
                    <workingDirectory>src/main/webapp</workingDirectory>
                    <nodeVersion>v6.0.0</nodeVersion>
                    <npmVersion>2.7.1</npmVersion>
                    <nodeDownloadRoot>https://nodejs.org/dist/</nodeDownloadRoot>
                    <npmDownloadRoot>https://registry.npmjs.org/npm/-/</npmDownloadRoot>
                </configuration>
                <executions>
                    <execution>
                        <id>install node and npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                    </execution>
                    <execution>
                        <id>npm install</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>npm rebuild node-sass</id>
                        <goals>
                            <goal>npm</goal>
                        </goals>
    
                        <configuration>
                            <arguments>rebuild node-sass</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>bower install</id>
                        <goals>
                            <goal>bower</goal>
                        </goals>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>gulp</id>
                        <goals>
                            <goal>gulp</goal>
                        </goals>
                        <phase>generate-resources</phase>
                        <configuration>
    
                                <arguments>${gulpProfile}</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <build.profile.id>dev</build.profile.id>
                <profileActive>dev</profileActive>
                <gulpProfile>-d</gulpProfile>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <build.profile.id>prod</build.profile.id>
                <profileActive>prod</profileActive>
                <gulpProfile>-p</gulpProfile>
            </properties>
        </profile>
    </profiles>
    
    前端
    前端
    前端项目
    com.main
    主要
    0.0.1-快照
    com.github.eirslett
    前端maven插件
    1
    src/main/webapp
    v6.0.0
    2.7.1
    https://nodejs.org/dist/
    https://registry.npmjs.org/npm/-/
    安装节点和npm
    安装节点和npm
    产生资源
    npm安装
    npm
    安装
    npm重建节点sass
    npm
    重建节点sass
    凉亭安装
    凉亭
    安装
    吞咽
    吞咽
    产生资源
    ${gulpProfile}
    发展
    真的
    发展
    发展
    -d
    戳
    戳
    戳
    -p
    

    你能帮我告诉我为什么会发生这种情况吗?

    通常这种情况会得到解决,因为前端依赖于后端生成的jar

    因此,即使它没有编译时依赖项,您仍然可以在
    提供的
    范围中添加一个:

    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>backend</artifactId>
       <version>${project.version}</version>
       <scope>provided</scope>
    </dependency>
    
    
    ${project.groupId}
    后端
    ${project.version}
    假如
    
    这将告诉maven reactor,它必须始终首先构建后端,而不更改生成的工件。

    • 首先从backend/pom.xml中删除
      标记。我希望您在默认情况下一次只需要保持一个配置文件处于活动状态,并且应该是
      dev
    • prod
      配置文件中删除backend/pom.xml中提到的依赖项。您的
      fronend
      项目应该依赖于
      后端
    • 在frontend/pom.xml中添加
      后端
      依赖项,如下所示(不在任何特定配置文件中)
    代码:


    @Bohdan Levkovych,上述步骤是否有助于您解决问题?