Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File Maven插件工作目录不是常量_File_Maven_Plugins_Maven 2_Classpath - Fatal编程技术网

File Maven插件工作目录不是常量

File Maven插件工作目录不是常量,file,maven,plugins,maven-2,classpath,File,Maven,Plugins,Maven 2,Classpath,我编写了一个Maven插件,在我的项目的类路径上创建一些XML文件。Maven项目相当复杂,有一个主项目和许多子项目(想想大型应用程序的服务) 该插件在pom.xml中使用一个目录参数,该参数与类路径相关,如下所示: <docDestination>src/main/webapp/static/</docDestination> src/main/webapp/static/ 但是,当我尝试通过newfile(docDestination)访问此文件夹时,生成的目录取

我编写了一个Maven插件,在我的项目的类路径上创建一些XML文件。Maven项目相当复杂,有一个主项目和许多子项目(想想大型应用程序的服务)

该插件在pom.xml中使用一个目录参数,该参数与类路径相关,如下所示:

<docDestination>src/main/webapp/static/</docDestination>
src/main/webapp/static/
但是,当我尝试通过
newfile(docDestination)
访问此文件夹时,生成的目录取决于我从中运行触发插件的
mvn install
命令的项目(或子项目)

该插件仅在其中一个子项目的
pom.xml
中指定,但如果我从父应用程序运行mvn安装,它将在父应用程序的
src/main/…
文件夹中创建xml文件。如何让插件使用声明它的项目的文件系统而不是父项目的文件系统


我应该注意,如果我导航到Terminal中的子项目,并在该目录中运行
mvn install
,文件将在正确的位置创建,这解释了我文章的标题。

使用${basedir}变量:

<docDestination>${basedir}/src/main/webapp/static</docDestination>
${basedir}/src/main/webapp/static

这应该使用各个模块当前使用的basedir(无论这是顶级模块还是子模块)。

我认为您没有添加当前项目的basedir,据我所知,它可以由注入的maven参数(MavenProject?)继承。否则,您可以将配置更改为${project.basedir}/src/main/webapp/static。所以应该有速度奖励。