簡體   English   中英

如何更改全局 maven 默認目標目錄?

[英]How to change globally maven default target directory?

我猜想更改 maven 構建的輸出目標目錄。 我見過的更多人問了大致相同的問題,我對其進行了一些改寫:

我希望我所有 m2 項目的所有生成文件都轉到特定的、不同於默認的構建目錄。 例如,如果我有項目 P1 和 P2,默認構建目錄是 P1/target 和 P2/target。 我想把它改成 P1/target 和 P2/target/或者更好的東西 - temp/P1/target 和 /temp/P2/target

我不想修改每一個 pom.xml。 我想把它作為一個全局的,我的環境特定的設置。

看起來有幾個 maven 插件的構建目錄路徑基於“project.build.directory”,所以我嘗試了諸如“m2 - Dproject.build.directory=/temp/target package”之類的東西,但這沒有效果。

有沒有人知道任何可行的方法來實現這一點 - 無論是通過 settings.xml 還是通過 -D 或其他一些全局方法?

如果您找到了-D解決方案,那么很容易將其設為全局。 只需使用MAVEN_OPTS環境變量。 Maven 會選擇它並將其應用於每個構建。

在 Windows 上(或使用 UI 設置)

set MAVEN_OPTS=-DsomeSystemProp=value

或在 Linux 上

export MAVEN_OPTS=-DsomeSystemProp=value

來源: https : //maven.apache.org/configure.html

注 1: .m2目錄中的.mvn目錄也是一個選項,但我從未在用戶級別使用過它。

注意2:人們往往忘記配置部分的約定優於配置的東西。 我已經看到硬編碼的target目錄作為插件和pom.xml文件中的輸出目錄。 請注意這一點,如果某些行為很有趣,請嘗試使用標准輸出目錄進行構建。

在一個舊項目中,我們使用 ramdisk 來加速構建。

我必須將M2_RAMDISK環境變量設置為我的 ramdisk,其余部分已處理。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>poc</groupId>
    <artifactId>ramdisk</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <directory>${override.project.build.directory}</directory>
    </build>
    <properties>
        <override.project.build.directory>target</override.project.build.directory>
    </properties>
    <profiles>
        <profile>
            <id>ramdisk</id>
            <activation>
                <property>
                    <name>env.M2_RAMDISK</name>
                </property>
            </activation>
            <properties>
                <override.project.build.directory>${env.M2_RAMDISK}/${project.groupId}/${project.artifactId}/${project.version}</override.project.build.directory>
            </properties>
        </profile>
    </profiles>
</project>

覆蓋構建的輸出目錄是有風險的,因為某些工具只使用target目錄而不是屬性值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM