私は Proguard を使用する初心者です (これは非常に便利です!)。開始点(パブリックインターフェイスなど)を使用して(難読化を一切行わずに)最小限のJARを作成したいと考えており、プロガードが依存クラスを推移的に取得することを望んでいました。ただし、依存クラスにはプライベートメンバー、そのパブリックゲッター/セッター、および注釈が欠けているようです。コンストラクターと toString メソッドのみが利用可能です。具体的には、私の SpecialService インターフェイスは SpecialObject (およびおそらく他の多く) を参照します。SpecialService のみをキープ クラスとして言及し、そのすべての依存 (非ライブラリ) クラス (すべての属性を含む - 難読化や最適化なし) を出力 jar にプルする必要があるかどうか疑問に思っていました。
<options>
<option>-keepattributes</option>
<option>-keep @javax.ws.rs.Path public class com.kilo.SpecialService { private public protected *;}</option>
</options>
すべての構成を試しましたが、うまくいかないようです。
SpecialService.java:
@GET
@Path("someComplexObjectsWithIntInputs")
List<SpecialObject> getSomeComplexObjectsWithIntInputs(
@QueryParam("ids") List<Integer> ids);
SpecialObject.java
public class SpecialObject {
private String name;
private Integer id;
private Date date;
public SpecialObject() {
}
public SpecialObject(String name, Integer id, Date date) {
this.name = name;
this.id = id;
this.date = date;
}
public String getName() {
return name;
}
public Integer getId() {
return id;
}
public Date getDate() {
return date;
}
public String getFoo() {
return "foo";
}
public void setName(String name) {
this.name = name;
}
public void setId(Integer id) {
this.id = id;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "SpecialObject [name=" + name + ", id=" + id + ", date=" + date
+ "]";
}
出力 SpecialObject.java:
/* */ public class SpecialObject
/* */ {
/* */ public String toString()
/* */ {
/* 56 */ return "SpecialObject [name=" + null + ", id=" + null + ", date=" + null + "]";
/* */ }
/* */ }
前もって感謝します!
誰かが遊んでみたい場合は、サンプルセットアップ @ https://github.com/kilokahn/proguard-tester/blob/master/proguard-tester-parent/proguard-tester-rs-api/pom.xmlを追加しました