我有一个项目,它有3个pom文件,和2个maven配置文件:prod和dev。问题是,当我使用cmd运行我的dev配置文件时
mvn clean install -Pdev 它按照以下顺序构建项目:
当我用prod配置文件构建项目时,它按照顺序构建项目:
这就是我想要的方式。但是当我运行cmd时
mvn clean install它需要使用dev配置文件构建项目,而且它可以这样做:1.前端,2.后端。
这就是问题所在,它改变了模块的顺序。这里是主要的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>下面是后端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>这里是前端pom.xml
<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>你能帮我说出为什么会这样吗?
发布于 2017-07-19 11:43:56
通常,这种事情是解决的,因为您的前端将依赖于您的后端产生的罐子。
因此,即使它没有编译时依赖性,仍然可以在provided作用域添加一个:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>backend</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>这将告诉maven反应堆,它必须始终首先构建后端,而不更改生成的工件。
发布于 2017-07-19 15:33:09
<activation>标记。我希望默认情况下一次只需要保持一个概要文件是活动的,并且应该是dev。prod配置文件中删除后端/put.xml中提到的依赖项。您的fronend项目应该依赖于backend。backend依赖项添加到前端/头文件中(而不是在任何特定的配置文件中)代码:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>backend</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>现在尝试下面的命令
mvn clean // (default profile `dev`)
mvn clean --activate-profiles prod // (with override profile `prod`)https://stackoverflow.com/questions/45189099
复制相似问题