我的包中有 package-info.java,Hibernate 需要它来实现某些功能(编程实体扫描)。
但是,
mvn package
不会导致 package-info.class
位于 classes/
中,因此不在工件中。
我怎样才能强迫这种情况发生?
mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.6.0_26
Java home: /usr/lib/jvm/java-6-sun-1.6.0.26/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.35-30-generic" arch: "amd64" Family: "unix"
错误是
package-info.java
必须有带有Retention=RUNTIME
的注释才能编译成类。否则,JDK 6 会忽略它。@Deprecated
,这是 Java SE 中唯一的一个(我不想仅仅因为这个而引入注释)。
@Deprecated
package cz.zizka.ondra.packageinfo.test
替代解决方案(受 zbyszek 的答案启发)是将其添加到您的
pom.xml
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-Xpkginfo:always</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
在 Maven 3 中可以正常工作;不知道2.是否有可能package-info.java中的包声明丢失或错误?