首页 > 解决方案 > Maven 是否在运行时一开始就提供钩子

问题描述

假设我们正在运行mvn test

我想知道是否有办法配置 Maven 在执行测试之前运行一些文件。就我而言,我想配置一个库,但不想为我的应用程序/测试中的每个入口点配置这个库。我只是想为每个调用运行时的 mvn 生命周期钩子配置 lib。

像这样的东西:

@MavenRuntimeLifecycle   
public class Whatever {

  public void runtimeBegin(){
      // right when the java process starts up
      Mylib.configure("foo");
  }

  public void runtimeEnd(){
     // right before the process shuts down
  }

}

我认为这将是一个 Maven 特定的东西——而不是它必须与我的服务器或测试等在同一个 Java 进程中。

请注意,使用 Node.js,我会简单地这样做:

export class MyLib {

  isConfigLoaded = false;

  static loadConfig(){
    // ...
  }

  static void run(){
    if(!this.isConfigLoaded){
      MyLib.loadConfig(require('../some/path/to/.mylib.config.js'));
      this.isConfigLoaded = true;
    }
    this.doTheThing();
  }

}

我可以对 Java 或 Maven 项目做同样的事情,只需在资源目录中存储一个 .java 文件。它更手动,但可以完成。

标签: javamaven

解决方案


推荐阅读