我有一个问题,我有一些JAXB生成的Java文件,其中有一个众所周知的“包信息。Java”,它只包含2行代码、注释和包定义:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://it.tms.project/input")
package it.tms.project.jaxb.input;
现在,当编译这个文件时会生成一个普通的类文件,但是当我尝试重新编译它时,它不会将它添加到子文件中,我想这是因为它不包含任何类或其他东西,没有其他Java文件引用它。
我试过一些预防措施来解决这个问题,但没有一个是好的:
-keepparameternames
-keepattributes Exceptions,InnerClasses,Signature,SourceFile,EnclosingMethod
-keeppackagenames it.tms.project.jaxb.input
-dontshrink
-dontoptimize
-keepattributes *Annotation* (I thought this one would work but I was wrong)
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
现在我只需要一些选项来显式地告诉proguard不要混淆我想要的文件,而只将其添加到output.jar中,我该怎么做呢?
请记住,像“keep class*{}”这样的选项不起作用,因为文件不包含任何类。
感谢任何人的回答,请完成您的留言,为扎那不勒斯!
最佳答案
就proguard而言,编译后的类与其他类一样。默认情况下,proguard会丢弃它,因为它不被使用(除了通过内省)。你可以保留它:
-keep class it.tms.project.jaxb.input.package-info
正如您所注意到的,您可能也希望在这个类上保留注释:
-keepattributes *Annotation*