在我的基于 Spring Boot 的项目中,我想从同一项目创建两个不同的版本。

生成哪个构建的决定应该来自 maven 配置文件。

我想创建一个构建(完整),其中包括某个文件夹 src/main/java/com/example/demo/full 和特定依赖项,以及第二个构建(默认light)构建不包含它们。

包含构建 full 的依赖项可以工作,但我不知道如何确保文件夹 src/main/java/com/example/demo/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> 

如何才能仅针对配置文件完整编译上述源文件夹?

请您参考如下方法:

添加第二个 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> 

此处使用 Build Helper Plugin 添加源文件夹Maven 的插件。因为它嵌入在 specific profile 的构建部分中,仅在使用此配置文件执行 Maven 时才处于 Activity 状态(请参阅激活部分)


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!