Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 2.0.2
-
Fix Version/s: backlog
-
Labels:None
-
Environment:Windows XP SP2
JDK 1.5.0_15
-
Number of attachments :
Description
The package-info.java files can not be compiled in Maven 2 if the 2.0.2 maven-compiler-plugin is used. package-info.java files can be compiled by earlier versions of the maven-compiler-plugin (I have tried 2.0 and 2.0.1). Newer snapshot versions does not work also and it fails in the same error (I have tried version 2.1-snapshot).
This problem can be caused by an unusual behavior of the javac from jdk 1.5. This behavior is as follows:
You can not use '/' file separator during compiling package-info.java (for instance "javac sk/forro/package-info.java"). You must use '\' separator (for instance "javac sk\forro\package-info.java"). If you use the '/' separator you get the the compilation error reported by this bug (package annotations should be in file package-info.java). This is javac 'feature' has been removed in jdk 6 and in jdk 6 you can use either '/' or '\' - it does not matter.
It looks like the maven-compiler-plugin or one of its components (I mean plexus-x artefacts used by maven-compiler-plugin) uses '/' instead of the '\' in the MS Windows environment.
I have attached a log file of an unsuccessful build (generated by mvn install -X)
A possible workaround to solve this problem temporarily:
The compilation successes if I use either an older version of maven-compiler-plugin or jdk 6 or do not use package-info.java files at all.
I have faced this issue myself. I tried both 2.0 and 2.0.1 and they did not work.
Then i used the excludes and got the code to compile. As the package-info file is only for javadoc I just ignored it. This is the only solution i could get to work.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<fork>true</fork>
<meminitial>128m</meminitial>
<maxmem>512m</maxmem>
<source>1.5</source>
<target>1.5</target>
<excludes>
<exclude>**/package-info.java</exclude>
</excludes>
</configuration>
</plugin>