在我基于Spring Boot
的项目中,我想从同一个项目中创建两个不同的构建。
生成哪个版本的决定应来自maven
个人资料。
我想创建一个构建(完整),其中包含某个文件夹src/main/java/com/example/demo/full
和某个依赖项,以及第二个构建(default
或light
)构建,但不包含它们
包含构建full
的依赖项有效,但我不知道如何确保仅为src/main/java/com/example/demo/full
构建编译文件夹full
。
这是我的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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>full</id>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>
如何设置仅为配置文件full
编译提到的源文件夹?
答案 0 :(得分:1)
添加第二个src文件夹,如scr\foo
,然后在maven中添加配置文件配置此src文件夹。
<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">
<build>
...
</build>
<profiles>
<profile>
<id>extraSource</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/foo/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
此处使用maven的Build Helper Plugin插件添加源文件夹。由于它嵌入在specific profile的构建部分中,因此只有在使用此配置文件执行maven时才会激活(请参阅激活部分)
答案 1 :(得分:0)
如果此依赖项是您不能不提供 ID 的父级的一部分,则禁用您的 maven-source-plugin 之一会出现问题,我建议您将此代码的无阶段用于您的 pom.xml 文件之一将禁用此功能。
我也推荐使用命令:mvn -Prelease-profile help:effective-pom 要打印您的代码中是否有两个依赖项 maven-source-plugin,如果是,请使用以下代码禁用其中之一:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>none</phase>
</execution>
</executions>
</plugin>