如何更改Maven目标目录的创建方式



我想知道哪个maven插件负责创建目录/target或在pom中配置的任何内容。

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

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

任何想法?

如果你想把你的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生成的确切时间。

但是根据Lifecycle Reference"初始化构建状态,例如设置属性或创建目录。"-它应该在这个阶段创建。在我看来,这是一个bug,应该报告。

你可以尝试用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:是您的ram磁盘。然后你可以用连接插件挂载:

                <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>

然后你可以把这个配置的两个插件配置文件和激活它,如果需要的话

最新更新