It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center




9年前关闭。




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

最佳答案

根据maven doc,有一个行家属性${project.basedir}
如果在资源中包括一个属性文件,该文件具有${project.basedir}占位符和enable filtering for the resources plugin,则会发现在属性文件中存在一个基于baseir的构建时间替代。然后,您可以使用Properties实例在代码中加载它。

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

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阶段在其中进行替换,但这不太容易解释。

10-07 22:23