我想知道哪个 maven-plugin 负责创建目录/target
或 pom.xml 中配置的任何内容。
由于某些原因,我想更改创建此文件夹的方式(链接而不是目录)。
另一种选择是在创建此目标文件夹之前运行我自己的插件,但我不知道如何确保我会成为第一个。
任何的想法?
我想知道哪个 maven-plugin 负责创建目录/target
或 pom.xml 中配置的任何内容。
由于某些原因,我想更改创建此文件夹的方式(链接而不是目录)。
另一种选择是在创建此目标文件夹之前运行我自己的插件,但我不知道如何确保我会成为第一个。
任何的想法?
如果您想将您的build
目录指向 ramdisk,我建议您不要链接到它,而是使用指向那里的属性,例如
<properties>
<custom.build.directory>/path/to/ram/disk/${project.groupId}/${project.artifactId}</custom.build.directory>
</properties>
<build>
<directory>${custom.build.directory}</directory>
...
</build>
我建议,您宁愿将此指令放入仅在您的系统上激活的自定义配置文件中。
请参阅DefaultMavenResourcesFiltering类。据我了解,target
如果需要,它会从任何生命周期动态创建。因此,您无法预测outputDirectory
.
但根据生命周期参考“初始化构建状态,例如设置属性或创建目录”。- 它应该在这个阶段创建。在我看来,这是一个错误,应该报告。
您可以尝试使用 exec 或 antrun 插件创建任何文件夹:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>createInMemoryTarget</id>
<phase>initialize</phase>
<configuration>
<tasks>
<mkdir dir="M:/${project.groupId}/${project.artifactId}/${project.version}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
M:
你的 ramdisk在哪里。然后你可以用junction plugin挂载:
<plugin>
<groupId>com.pyx4j</groupId>
<artifactId>maven-junction-plugin</artifactId>
<version>1.0.3</version>
<executions>
<execution>
<id>symlinkTargetToInMemory</id>
<phase>initialize</phase>
<goals>
<goal>link</goal>
</goals>
</execution>
</executions>
<configuration>
<links>
<!-- link the target folder to appropriate in-memory to directory -->
<link>
<src>M:/${project.groupId}/${project.artifactId}/${project.version}</src>
<dst>${project.build.directory}</dst>
</link>
</links>
</configuration>
</plugin>
然后,您可以将这两个插件的配置放在配置文件中,并在需要时激活它。