2

我想知道哪个 maven-plugin 负责创建目录/target或 pom.xml 中配置的任何内容。

由于某些原因,我想更改创建此文件夹的方式(链接而不是目录)。

另一种选择是在创建此目标文件夹之前运行我自己的插件,但我不知道如何确保我会成为第一个。

任何的想法?

4

2 回答 2

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>

我建议,您宁愿将此指令放入仅在您的系统上激活的自定义配置文件中。

于 2013-06-12T15:46:04.813 回答
1

请参阅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>

然后,您可以将这两个插件的配置放在配置文件中,并在需要时激活它。

于 2016-05-10T19:22:24.370 回答