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]