我想知道哪個maven插件負責創建目錄/target
或任何配置在pom中。如何更改Maven目標目錄的創建方式?
由於某些原因,我想改變這個文件夾的創建方式(鏈接而不是目錄)。
另一個選項是在創建目標文件夾之前運行我自己的插件,但我不知道如何確保我將成爲第一個。
任何想法?
我想知道哪個maven插件負責創建目錄/target
或任何配置在pom中。如何更改Maven目標目錄的創建方式?
由於某些原因,我想改變這個文件夾的創建方式(鏈接而不是目錄)。
另一個選項是在創建目標文件夾之前運行我自己的插件,但我不知道如何確保我將成爲第一個。
任何想法?
如果你想將你的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>
我建議,您寧願將此指令放入僅在您的系統上激活的自定義配置文件中。
這是一種標準方式,但不幸的是它可能有缺點。從Maven調用的一些寫得很差的構建腳本,例如ant-run,enunciate等,可能預計目標文件夾接近'src'目錄。 另一個原因是,您的一些IDE運行配置可能會期望二進制文件處於目標狀態。 另外,離開您的消息來源可能會感到不舒服。 – stokito
請參閱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>
然後你可以將這個配置兩個插件的個人資料,如果需要激活它。
您想要實現什麼?從目標文件夾鏈接聽起來有點奇怪? – khmarbaise
我想創建一個指向我的虛擬硬盤的目標文件夾 – poussma