我想知道哪个maven-plugin负责创建目录/target
或pom中配置的任何内容。
出于某些原因,我想更改此文件夹的创建方式(链接而不是目录)。
另一个选择是在创建此目标文件夹之前运行我自己的插件,但我不知道如何确保我成为第一个。
有什么想法吗?
答案 0 :(得分:3)
如果你想将你的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>
我建议您将此指令放入仅在系统上激活的自定义配置文件中。
答案 1 :(得分:1)
参见DefaultMavenResourcesFiltering课程。
据我所知,如果需要,它会从任何生命周期动态创建target
。
因此,您无法预测outputDirectory
的确切创建时间。
但根据Lifecycle Reference“初始化构建状态,例如设置属性或创建目录。” - 它应该在这个阶段创建。在我看来,这是一个错误,应该报告。
您可以尝试使用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>
然后您可以将两个插件的配置放在配置文件中,并在需要时激活它。