The build helper plugin allows me to add more source directories, but doesn't allow me to have different compiler configurations for the different directories. And also doesn't allow me to specify separate output directories.

I have some situations where it is useful to have two separate test sources that are compiled differently and then output to different locations. For the main sources it's not as much of an issue.

Brian E. Fox wrote:
Why doesn't the buildhelper plugin work for this use case? That lets you
attach many source folders.

-----Original Message-----
From: Paul Gier [mailto:pg...@redhat.com] Sent: Friday, March 13, 2009 2:58 PM
To: Maven Developers List
Subject: Re: svn commit: r753302 - in
/maven/plugins/trunk/maven-compiler-plugin/src:
it/alt-src-output-directories-MCOMPILER-91/
it/alt-src-output-directories-MCOMPILER-91/src/
it/alt-src-output-directories-MCOMPILER-91/src/my-classes/
it/alt-src-output-directori

Do you have an issue with it in both the compile and test-compile mojos?
Or is the test-compile mojo ok?
The test-compile mojo is where I need it because I have multiple sets of
test classes that require different compile parameters.

Jason van Zyl wrote:
-1

I don't want people to start abusing this and directly using multiple source directories. This will get abused so fast and is only required
by
people who have messed up systems.

On 13-Mar-09, at 8:37 AM, pg...@apache.org wrote:

Author: pgier
Date: Fri Mar 13 15:37:13 2009
New Revision: 753302

URL: http://svn.apache.org/viewvc?rev=753302&view=rev
Log:
[MCOMPILER-91] Allow source and output directories to be configured.

Patch from Peter Janes (peterj).

Added:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml
(with props)
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java
(with props)
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh
(with props)
Modified:
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/CompilerMojo.java
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/TestCompilerMojo.java

Added:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/s
rc/it/alt-src-output-directories-MCOMPILER-91/pom.xml?rev=753302&view=au
to

========================================================================
======
---
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml
(added)
+++
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml
Fri Mar 13 15:37:13 2009
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<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/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.plugins.compiler</groupId>
+  <artifactId>altconfig</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <name>Test for alternative source/target configuration</name>
+
+  <properties>
+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.2</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>@pom.version@</version>
+        <executions>
+          <execution>
+            <id>my-classes</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+            <configuration>
+              <compileSourceRoots>
+ <compileSourceRoot>src/my-classes/java</compileSourceRoot>
+              </compileSourceRoots>
+              <outputDirectory>target/my-classes</outputDirectory>
+            </configuration>
+          </execution>
+          <execution>
+            <id>my-test-classes</id>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>testCompile</goal>
+            </goals>
+            <configuration>
+              <compileSourceRoots>
+ <compileSourceRoot>src/my-classes/java</compileSourceRoot>
+              </compileSourceRoots>
+
<outputDirectory>target/my-test-classes</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml

------------------------------------------------------------------------
------
   svn:eol-style = native

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/pom.xml

------------------------------------------------------------------------
------
   svn:keywords = Author Date Id Revision

Added:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/s
rc/it/alt-src-output-directories-MCOMPILER-91/src/my-classes/java/MyTest
.java?rev=753302&view=auto

========================================================================
======
---
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java
(added)
+++
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java
Fri Mar 13 15:37:13 2009
@@ -0,0 +1,7 @@
+import junit.framework.TestCase;
+
+public class MyTest
+    extends TestCase
+{
+
+}

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java

------------------------------------------------------------------------
------
   svn:eol-style = native

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/src/my-classes/java/MyTest.java

------------------------------------------------------------------------
------
   svn:keywords = Author Date Id Revision

Added:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/s
rc/it/alt-src-output-directories-MCOMPILER-91/verify.bsh?rev=753302&view
=auto

========================================================================
======
---
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh
(added)
+++
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh
Fri Mar 13 15:37:13 2009
@@ -0,0 +1,24 @@
+import java.io.*;
+
+try
+{
+ File outputClasses = new File( basedir, "target/my-classes/MyTest.class" );
+    if ( !outputClasses.isFile() )
+    {
+ System.out.println( "Test class not existent: " + outputClasses );
+        return false;
+    }
+ File outputTestClasses = new File( basedir, "target/my-test-classes/MyTest.class" );
+    if ( !outputTestClasses.isFile() )
+    {
+ System.out.println( "Test class not existent: " + outputTestClasses );
+        return false;
+    }
+}
+catch( Throwable t )
+{
+    t.printStackTrace();
+    return false;
+}
+
+return true;

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh

------------------------------------------------------------------------
------
   svn:eol-style = native

Propchange:
maven/plugins/trunk/maven-compiler-plugin/src/it/alt-src-output-director
ies-MCOMPILER-91/verify.bsh

------------------------------------------------------------------------
------
   svn:keywords = Author Date Id Revision

Modified:
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/CompilerMojo.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/s
rc/main/java/org/apache/maven/plugin/CompilerMojo.java?rev=753302&r1=753
301&r2=753302&view=diff

========================================================================
======
---
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/CompilerMojo.java
(original)
+++
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/CompilerMojo.java
Fri Mar 13 15:37:13 2009
@@ -45,11 +45,18 @@
    extends AbstractCompilerMojo
{
    /**
+ * The default source directories containing the sources to be compiled.
+     *
+     * @parameter default-value="${project.compileSourceRoots}"
+     *
+     */
+    private List defaultCompileSourceRoots;
+
+    /**
     * The source directories containing the sources to be compiled.
     *
-     * @parameter expression="${project.compileSourceRoots}"
-     * @required
-     * @readonly
+     * @parameter
+     *
     */
    private List compileSourceRoots;

@@ -65,9 +72,8 @@
    /**
     * The directory for compiled classes.
     *
-     * @parameter expression="${project.build.outputDirectory}"
+     * @parameter default-value="${project.build.outputDirectory}"
     * @required
-     * @readonly
     */
    private File outputDirectory;

@@ -97,6 +103,10 @@

    protected List getCompileSourceRoots()
    {
+        if( compileSourceRoots == null )
+        {
+            compileSourceRoots = defaultCompileSourceRoots;
+        }
        return compileSourceRoots;
    }


Modified:
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/TestCompilerMojo.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/s
rc/main/java/org/apache/maven/plugin/TestCompilerMojo.java?rev=753302&r1
=753301&r2=753302&view=diff

========================================================================
======
---
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/TestCompilerMojo.java
(original)
+++
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven
/plugin/TestCompilerMojo.java
Fri Mar 13 15:37:13 2009
@@ -52,11 +52,18 @@
    private boolean skip;

    /**
-     * The source directories containing the test-source to be
compiled.
+ * The default source directories containing the test-source to be compiled.
     *
-     * @parameter expression="${project.testCompileSourceRoots}"
-     * @required
+     * @parameter default-value="${project.testCompileSourceRoots}"
     * @readonly
+     * @required
+     */
+    private List defaultCompileSourceRoots;
+
+    /**
+     * The source directories containing the test-source to be
compiled.
+     *
+     * @parameter
     */
    private List compileSourceRoots;

@@ -72,9 +79,8 @@
    /**
     * The directory where compiled test classes go.
     *
-     * @parameter expression="${project.build.testOutputDirectory}"
+     * @parameter
default-value="${project.build.testOutputDirectory}"
     * @required
-     * @readonly
     */
    private File outputDirectory;

@@ -149,6 +155,10 @@

    protected List getCompileSourceRoots()
    {
+        if( compileSourceRoots == null )
+        {
+            compileSourceRoots = defaultCompileSourceRoots;
+        }
        return compileSourceRoots;
    }



Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
----------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to