如何从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")