Maven 测试 - 如何从 Java 获取当前的 Maven 设置

Maven Testing - How can I get current Maven Settings from Java

我正在 Maven 中为 WCC 组件构建集成测试。

在mavens中pom.xml我也配置了一个插件:

  1. 构建组件
  2. 部署组件
  3. 启用组件
  4. 重启组件

完成后,我将着手获取 Maven-Failsafe-Plugin 来测试已安装的插件。

在测试插件之前,我需要进行一些设置。我决定最简单的方法是为我的集成测试创建一个父 class,只有当它还没有 运行 时才会初始化。

示例:

@BeforeClass
public static initialize()
{  
   //lazy init here
}

由于我的组件已经 installed/enabled 来自 Maven 配置,我想利用该信息而不是为集成测试复制它。

在我的 pom.xml 我有:

<plugin>
  <groupId>org.ucmtwine</groupId>
  <artifactId>ucm-maven-plugin</artifactId>
  <version>0.1.2-SNAPSHOT</version>
  <extensions>true</extensions> <!-- Allows WCC packaging type -->
  <configuration>
    <servers>
      <server>            
        <id>sandbox</id>
        <url>http://localhost:16200/cs/idcplg</url>
        <username>myUser</username>
        <password>myPass</password>
        <adminServer>
          <hostname>localhost</hostname> 
          <serverName>AdminAServer</serverName> 
          <wlsServerName>UCM_server1</wlsServerName> 
        </adminServer>
      </server>
    </servers>
  </configuration>
</plugin>

如何从我的 @BeforeClass 初始化方法访问该信息?此外,我的 Maven 插件还支持 -Dserver,因此用户可以选择要使用的服务器配置(基于 ID)。我将如何访问该参数?

注意:我没有为此使用 settings.xml

IMO 你不应该尝试这样做。 settings.xml 作为 Maven 和 Maven 插件可访问的典型 Maven 文件。该组件是一段独立的代码,您不应该尝试混合使用这两者。 我可以想到几个选项:

  • 为您的组件集成测试提供正确的配置,例如通过系统属性或属性文件。在这两种情况下,您可能需要一个额外的 maven-plugin 来准备它(在预集成测试期间)。但是,这使得在 IDE.
  • 中直接 运行 变得有点困难
  • 使用您的 maven 插件对组件进行真正的集成测试。最后,这可能也是组件使用方式的首选方式。
  • 不要为此使用 maven-failsafe-plugin。创建一个单独的 Java 项目用于集成测试,您可以在其中控制环境设置。

前两个最符合您的要求,但我更喜欢第三个选项。