同一配置文件上的Maven模块订单更改
我有一个项目,它有3个pom文件和2个maven配置文件:prod和dev。问题是当我用cmd运行我的dev配置文件时同一配置文件上的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 这就是问题所在,它改变了模块的顺序。
mvn clean install -Pdev
它按顺序构建项目:
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,上述步骤是否有助于您解决问题?