我有一个 Spring Boot Maven Web 应用程序 (
app.war
),它依赖于库 lib.jar
。 lib.jar
发布有两个分类器:
lib-release.jar
,被 proguard 混淆了lib-debug.jar
,没有混淆并且有额外的记录器我希望能够在 启动仪表板运行配置上指定要使用哪个分类器作为属性/配置,而不是编辑 POM,这是我能够让它工作的唯一方法。这可能吗?
目前,
pom.xml
被配置为默认使用发布jar,以便使用混淆版本,但是我们有一个debug
配置文件,我们可以在打包时使用它来与调试库创建战争,例如:mvn clean package -Pdebug
。示例:
<properties>
<lib.classifier>release<lib.classifier>
<properties>
...
<profiles>
<profile>
<id>debug</id>
<properties>
<lib.classifier>debug</lib.classifier>
</properties>
</profile>
</profiles>
...
<dependencies>
<dependency>
<groupId>libgrp</groupId>
<artifactId>lib</artifactId>
<version>1.0</version>
<classifier>${lib.classifier}</classifier>
</dependency>
</dependencies>
这对于打包来说效果很好,但是 eclipse 中的“启动仪表板”似乎只使用默认属性,并且忽略了我使用参数切换 Maven 配置文件的所有尝试。启动仪表板在触发时必须解析依赖项,但是有没有办法可以指定 Maven 属性,甚至只是显式设置该属性而不修改
pom.xml
?我尝试过指定 Pdebug
、-Dlib.classifier=debug
甚至 --lib.classifier=debug
,这是一个不太可能的选择,因为这只是一个 Spring 风格的属性而不是 Maven。
附加信息:
我认为答案是肯定的。重要的是要记住,您实际上有 2 组不同的配置文件在使用。 Maven 配置文件在 构建时发挥作用,而 Spring 配置文件在运行时发挥作用。
您绝对可以使用 maven 配置文件在构建时自定义 pom 的依赖项和其他方面。您的构建作业(无论运行 mvn 命令)都需要调用适当的 Maven 配置文件来构建(使用 mvn -P)具有所需的依赖项。有关如何使用特定于配置文件的依赖项、插件等的信息,请参阅 maven 构建配置文件文档。
此外,Spring 配置文件可用于更新已构建工件的运行时行为。 Spring 配置文件文档 描述了如何使用选择特定于配置文件的 bean 和配置的配置文件进行编码并启动 Spring 应用程序。当构建一个必须测试并部署到不同环境(开发、登台、质量保证、生产等)的工件时,这非常有用。在每种情况下,都有一个编译的工件(jar、war、ear),它足够智能,可以使用活动的 spring 配置文件为所需的环境配置自身。