如何从java代码中获取Maven项目BaseDir()



如何从我的Java代码获得Maven项目basedir() ?

根据maven文档,有一个maven属性${project.basedir}

如果您在资源中包含一个属性文件,其中包含${project.basedir}占位符,并启用资源插件的过滤,您将发现在构建时将basedir替换到属性文件中。然后你可以在代码中使用Properties实例加载它。

在/src/main/resources中创建一个名为project的文件。属性,包含

my.basedir=${project.basedir}

然后,在POM中启用对/src/main/resources的过滤,如上面链接的maven资源过滤文档所述。

然后,在代码中,在运行时,将属性文件加载到Properties实例

Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("project.properties"));
String myBasedir = props.get("my.basedir");

另一种方法是处理一些源文件,并通过挂钩到process-sources阶段在那里进行替换,但这可能不太容易解释。

我假设你想要这个从'exec:exec'或'test'运行。如果是这种情况,你可以通过

获取它
System.getProperties().get("basedir")

你不能,因为maven是用于构建的,并且在构建之后不存在。

如果你需要在构建期间(例如通过exec插件),那么它可以作为一个系统属性访问,或者你可以将它作为参数传递给执行的程序。

最新更新