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

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

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

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

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

 project.basedir=${basedir} 

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

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

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

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

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

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

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

 System.getProperties().get("basedir")