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

Fer*_*deh 11 java maven-2

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

pto*_*mli 8

根据Codehaus,有一个maven属性${basedir}

如果在资源中包含属性文件(具有${basedir}占位符),并为资源插件启用过滤,则会发现将basedir的构建时间替换为属性文件.然后,您可以使用Properties代码中的实例加载它.

在/ src/main/resources中,创建一个名为project.properties的文件,其中包含

project.basedir=${basedir}
Run Code Online (Sandbox Code Playgroud)

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

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

Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("project.properties"));
String basedir = props.get("project.basedir");
Run Code Online (Sandbox Code Playgroud)

另一种方法是处理一些源文件,并通过挂钩进入process-sources相位进行替换,但这不太容易解释.


Bri*_*arr 5

我假设从'exec:exec'或'test'运行时,您要这样做。如果是这样,您可以通过

System.getProperties().get("basedir")
Run Code Online (Sandbox Code Playgroud)