[ 
https://issues.apache.org/jira/browse/MNG-6661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17771778#comment-17771778
 ] 

Björn Michael commented on MNG-6661:
------------------------------------

A user property to set {{project.build.directory}} would be very useful.

The existing workarounds via custom profile and self-defined property are 
described at SO [Maven: How to change path to target directory from command 
line?|https://stackoverflow.com/a/3908061]
but it requires touching the POM of each project.
On the other hand, a similar user property to override the local maven 
repository path exists {{-Dmaven.repo.local=/tmp/build-from-scratch}} so why 
not for the build directory?
h3. Usage examples
 * Build tools can specify a different build directory via CLI e.g. Jenkins
 * Troubleshooting - create a fresh build in a different directory and compare 
the outputs of both builds
 * User properties can be set via settings.xml i.e. project POM files aren't 
modified. See below

This should work after introducing the user propery: use a different build 
directory for Eclipse IDE defined in *settings.xml* (inspired by 
[jetcd|https://github.com/etcd-io/jetcd/commit/450c0dd9afd154b80db7f37e00c1ff462eb2fdb9#diff-9c5fb3d1b7e3b0f54bc5c4182965c4fe1f9023d449017cece3005d3f90e8e4d8])
{noformat}
<profile>
    <id>eclipse-ide</id>
    <activation>
        <property>
            <name>m2e.version</name>
        </property>
    </activation>
    <properties>
        <!-- Put the IDE's build output in a folder other than target, so that 
IDE builds don't interact with Maven builds -->
        <maven.buildDir>${project.basedir}/target-eclipse</maven.buildDir>
     </properties>
</profile>
{noformat}

> Override project.build.directory via user property
> --------------------------------------------------
>
>                 Key: MNG-6661
>                 URL: https://issues.apache.org/jira/browse/MNG-6661
>             Project: Maven
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Sergey Ponomarev
>            Assignee: Robert Scholte
>            Priority: Minor
>
> I would like to improve a build speed of a big project. The project uses a 
> lot of IO operation during a build. So I decided to put all /target 
> directories into RAM disk while keeping sources on a hard drive.
> I mounted a RAM disk to /mnt/ramdisk and created a profile:
> {code:xml}
>     <profile>
>       <activation>
>         <activeByDefault>true</activeByDefault>
>       </activation>
>       <id>ramDisk</id>
>       <properties>
>        
> <project.build.directory>/mnt/ramdisk/${project.groupId}/${project.artifactId}/target</project.build.directory>
>       </properties>
>     </profile>
> {code}
> In fact this is an equivalent of specifying -Dproject.build.directory
> But unfortunately this doesn't work because the property here (i.e. "user 
> property") is ignored.
> To make it working I should add into pom.xml this:
> {code}
>   <build>
>     <directory>${project.build.directory}</directory>
> {code}
> I.e. explicitly reuse the user property project.build.directory as 
> configuration.
> Don't be confused, we can call the user property anyhow e.g. ${ram_dir} but I 
> just wan't to reuse existing property.
> I found a ticket that looks similar 
> https://issues.apache.org/jira/browse/MNG-2598 but this is another story.
> So could we implement this?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to