I've found the problem. Plexus (which runs the compiler and commandline) is 
quoting each argument. So for this configuration:

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <target>1.6</target>
          <source>1.6</source>
          <compilerArguments>
            <verbose />
            <bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
          </compilerArguments>
          <compilerArgument>-implicit:none -proc:none</compilerArgument>
          <fork>true</fork>
        </configuration>
      </plugin>
    </plugins>
  </build>

mvn clean compile -X gives the following output:

[DEBUG] Command line options:
[DEBUG] -d /home/nick/workspace/buildserver-test-project/trunk/target/classes 
-classpath /home/nick/workspace/buildserver-test-project/trunk/target/classes: 
/home/nick/workspace/buildserver-test-project/trunk/src/main/java/nl/iprofs/sandbox/buildservertest/App.java
 -g -nowarn -target 1.6 -source 1.6 -bootclasspath 
/usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/rt.jar -verbose -implicit:none 
-proc:none
[INFO] Compiling 1 source file to 
/home/nick/workspace/buildserver-test-project/trunk/target/classes

While it is actually executing:

/usr/lib/jvm/java-6-sun-1.6.0.00/bin/javac -d 
/home/nick/workspace/buildserver-test-project/trunk/target/classes -classpath 
/home/nick/workspace/buildserver-test-project/trunk/target/classes: 
/home/nick/workspace/buildserver-test-project/trunk/src/main/java/nl/iprofs/sandbox/buildservertest/App.java
 -g -nowarn -target 1.6 -source 1.6 -bootclasspath 
/usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/rt.jar -verbose "-implicit:none 
-proc:none"

(Much more quotes, but just for the idea) If I execute this myself, javac 
indeed gives the error as described.

I guess, this should be a feature request for the maven-compiler-plugin, to 
indeed accept multiple compilerArgument options. Maybe something like this:

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <target>1.6</target>
          <source>1.6</source>
          <compilerArguments>
            <verbose />
            <bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
            <compilerArgument>-implicit:none</compilerArgument>
            <compilerArgument>-prox:none</compilerArgument>
          </compilerArguments>
          <fork>true</fork>
        </configuration>
      </plugin>
    </plugins>
  </build>

Hth,

Nick Stolwijk

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Mon 11/26/2007 5:34 PM
To: Maven Users List
Subject: RE: Not able to pass multiple arguments to javac
 
The fault message you see is actually from javac itself. You're trying to add 
options that are not supported by javac. All javac options are "supported" by 
the mojo, it simply passes them to javac.

Why would you want to add options to javac which are not supported by javac?

With regards,

Nick Stolwijk


-----Original Message-----
From: [EMAIL PROTECTED] on behalf of Sahoo
Sent: Mon 11/26/2007 5:12 PM
To: Maven Users List
Subject: Re: Not able to pass multiple arguments to javac
 
Yes, I knew that approach, but the options I actually want to pass are 
not supported by the mojo. nowarn and verbose were just used as 
examples; I want to pass -proc:none and -implicit. They are not 
supported by javac. There are many such options which are not supported 
by the mojo. I thought compilerArgument is the way to use them. But, it 
is *not* working.

Thanks,
Sahoo

Jeff Jensen wrote:
> Try this approach:
>
>         <configuration>
>           <fork>true</fork>
>           <maxmem>1024m</maxmem>
>           <showDeprecation>true</showDeprecation>
>           <showWarnings>true</showWarnings>
>           ....etc...
>         </configuration>
>
> To know element names to use, use the Name found in the Optional Parameters
> section of this page:
>   http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html
>
>
>   
>> -----Original Message-----
>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
>>     
> Sahoo
>   
>> Sent: Monday, November 26, 2007 8:25 AM
>> To: Maven Users List
>> Subject: Re: Not able to pass multiple arguments to javac
>>
>> Ignore my earlier email. The suggestion actually does *not* work. When I
>> run with -X option, it shows only the last compilerArgument. See the
>> following output:
>>
>> [DEBUG] Configuring mojo
>> 'org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile' -->
>> [DEBUG]   (f) basedir = /tmp/my-app
>> [DEBUG]   (f) buildDirectory = /tmp/my-app/target
>> [DEBUG]   (f) classpathElements = [/tmp/my-app/target/classes]
>> [DEBUG]   (f) compileSourceRoots = [/tmp/my-app/src/main/java]
>> [DEBUG]   (f) compilerArgument = -verbose
>> [DEBUG]   (f) compilerId = javac
>> [DEBUG]   (f) debug = true
>> [DEBUG]   (f) failOnError = true
>> [DEBUG]   (f) fork = false
>> [DEBUG]   (f) optimize = false
>> [DEBUG]   (f) outputDirectory = /tmp/my-app/target/classes
>> [DEBUG]   (f) outputFileName = my-app-1.0-SNAPSHOT
>> [DEBUG]   (f) projectArtifact = com.mycompany.app:my-app:jar:1.0-SNAPSHOT
>> [DEBUG]   (f) showDeprecation = false
>> [DEBUG]   (f) showWarnings = false
>> [DEBUG]   (f) staleMillis = 0
>> [DEBUG]   (f) verbose = false
>> [DEBUG] -- end configuration --
>>
>> Thanks,
>> Sahoo
>>
>> Sahoo wrote:
>>     
>>> Thanks, that works.
>>>
>>> Sahoo
>>>
>>> Wayne Fay wrote:
>>>       
>>>> Try this, Sahoo:
>>>>
>>>> <plugin>
>>>>    <groupId>org.apache.maven.plugins</groupId>
>>>>    <artifactId>maven-compiler-plugin</artifactId>
>>>>    <configuration>
>>>>        <compilerArgument>-nowarn</compilerArgument>
>>>>        <compilerArgument>-verbose</compilerArgument>
>>>>    </configuration>
>>>> </plugin>
>>>>
>>>> On 11/22/07, Sahoo <[EMAIL PROTECTED]> wrote:
>>>>
>>>>         
>>>>> As suggested in [1], I tried configuring maven-compiler-plugin like
>>>>> this:
>>>>>
>>>>>          <compilerArgument>-nowarn -verbose</compilerArgument>
>>>>>
>>>>> But it causes compilation failure. Details given below:
>>>>>
>>>>> Failure executing javac, but could not parse the error:
>>>>> javac: invalid flag: -nowarn -verbose
>>>>>
>>>>> How can I pass multiple arguments to javac?
>>>>>
>>>>> Thanks,
>>>>> Sahoo
>>>>> [1]
>>>>> http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-
>>>>>           
>> compiler-arguments.html
>>     
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>>>           
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>         
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>       
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>     
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to