如果我有两个maven插件,其中A
取决于B
而B
有配置参数,我应该如何定义B
的配置?
我能想到三种解决方案,我所知道的解决方案不适用,而且我不确定哪种解决方案有效,或者还有其他可能性。不幸的是,即使是这个简单的案例,我也找不到任何例子。
尝试1 (不可能)
将<configuration>
放在依赖项下。这是不可能的,因为<dependency>
代码不能包含<configuration>
代码(see xsd)。
<plugin>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>1.0.0</version>
<configuration>
<paramForB><param>bbb</param></paramForB>
</configuration>
</dependency>
</dependencies>
</plugin>
尝试2
将配置参数放在A
的配置下。
<plugin>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<paramForB><param>bbb</param></paramForB>
</configuration>
</plugin>
尝试3
将B
作为单独的插件引入我需要的配置。
<plugin>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>1.0.0</version>
<configuration>
<paramForB><param>bbb</param></paramForB>
</configuration>
</plugin>
<plugin>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</plugin>
其他问题(只是好奇)
B
取决于C
,该怎么办?我该如何配置C
?X
,它也取决于B
,但会将其与其他配置一起使用:我可以这样做吗?答案 0 :(得分:0)
在maven中,您有个人资料和属性。 首先从属性开始:
项目B
<properties>
<customeParameter>parameterInB</customeParameter>
</properties>
<plugin>
<groupId>A</groupId>
<artifactId>A</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>1.0.0</version>
<configuration>
<paramForB>${customeParameter}</paramForB>
</configuration>
</dependency>
</dependencies>
</plugin>
项目A
<properties>
<customeParameter>overrideInA</customeParameter>
</properties>
请参阅我对问题的回答:How to get a command-line property to overwrite a maven property
如果项目B是项目A的父项,我的示例将起作用。如果不是,请在父pom中定义共享配置(它将是A和B的父项)并对其进行参数化。然后在孩子中你可以定义&#34;属性&#34;此配置的节值。
答案 1 :(得分:0)
答案基本上是尝试2 ,即将B
的配置添加到插件使用A
,但这取决于插件A
的实现方式因为它有责任传递参数。