Maven:将 package-info.java 编译为 package-info.class?

问题描述 投票:0回答:4

我的包中有 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"
java maven-2 compilation package
4个回答
11
投票

-Xpkginfo:always
选项提供给 javac。

参见


3
投票

错误是

package-info.java
必须有带有
Retention=RUNTIME
的注释才能编译成类。否则,JDK 6 会忽略它。
我使用了
@Deprecated
,这是 Java SE 中唯一的一个(我不想仅仅因为这个而引入注释)。

@Deprecated
package cz.zizka.ondra.packageinfo.test

0
投票

替代解决方案(受 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>

-1
投票

在 Maven 3 中可以正常工作;不知道2.是否有可能package-info.java中的包声明丢失或错误?

© www.soinside.com 2019 - 2024. All rights reserved.