Maven:将 package-info.java 编译为 package-info.class?
我的包中有 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"
I have package-info.java in my package, Hibernate wants it for some features (programatic entity scanning).
However, mvn package
does not result in package-info.class
being in classes/
thus not in the artifact.
How can I force that happening?
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"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
为 javac 提供
-Xpkginfo:always
选项。请参阅
javac
1.8 文档javac
17文档Give
-Xpkginfo:always
option to javac.See the
javac
1.8 documentationjavac
17 documentation错误是
package-info.java
必须具有任何带有Retention=RUNTIME
的注释才能编译成类。否则,JDK 6 会忽略它。我使用了
@Deprecated
,这是 Java SE 中唯一的一个(并且我不想仅仅因为这个而引入注释)。The error was that the
package-info.java
must have any annotation withRetention=RUNTIME
to compile into a class. Otherwise, JDK 6 omits it.I used
@Deprecated
which is the only one in Java SE (and I didn't want to introduce an annotation just because of that).替代解决方案(受到 zbyszek 答案的启发)是将其添加到您的
pom.xml
中:Alternative solution (inspired by zbyszek's answer) is to add this to your
pom.xml
:在 Maven 3 中工作正常;不知道2.是否有可能package-info.java中的包声明丢失或错误?
Works correctly in Maven 3; don't know about 2. Is it possible that the package declaration in package-info.java is missing or wrong?