分析不同分支的maven依赖关系

时间:2016-01-13 09:04:26

标签: java spring maven spring-boot

我使用spring框架(home项目),并且有两个主要版本的同一个项目(分支)。

  • 第一个是使用pom内部手动配置的包依赖项的“纯”spring框架。
  • 第二个用于Spring启动,由于spring-boot自动化(涉及依赖关系),它在pom中的依赖关系略有不同。

问题:有没有办法在一个文件中使用这两个不同的pom依赖项(类似于配置文件)?或者还有另一种更好的解决方案来保持这两种配置吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Maven配置文件为特定的Maven配置文件提供单独的插件或依赖项,例如:

<profiles>
    <profile>
        <id>profile-1</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>com.example.xyz</groupId>
                <artifactId>library-1</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>profile-2</id>
        <dependencies>
            <dependency>
                <groupId>com.example.xyz</groupId>
                <artifactId>library-2</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>com.example.xyz</groupId>
                <artifactId>library-3</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

在这种情况下,如果您在构建时使用-P profile-1,则会添加library-1。使用-P profile-2,它将包含library-2和library-3。

虽然我的用例并不完全清楚,但听起来这根本不是一个项目。我的意思是,如果你有一个项目,那么你正在切换Spring启动/非Spring启动似乎很奇怪。

如果您有多个项目需要相同的类,您始终可以创建一个包含这些类的单独模块。然后您可以使用:

@ComponentScan(basePackages = "com.example.common.library")

现在,您的共享类将被Spring启动和非Spring启动项目使用。

如果您正在尝试特定项目的Spring启动,或者您正在从vanilla Spring转换为Spring启动,那么您应该使用VCS(如Git)来处理它,创建一个新分支来开发Spring启动应用程序,并在完成后将其合并到主分支中。