Chtěl jsem se trochu povrtat v projektu Apache POI, ale jak průvodci v NetBeans, tak instrukce na stránce projektu předpokládají, že se SVN umíte, jak když bičem mrská, což v mém případě bylo doteď přesně naopak :-)
Dobrý návod pro NetBeans najdete na http://www.netbeans.org/…version.html. Já se ho pokusím trochu zestručnít a tento extrakt obohatit o své zkušenosti.
Subversion jsem viděl poprvé, proto jsem se chvíli plácal v pojmech. Pro pořádek a pro začátečníky je tedy uvedu.
Zbytek pojmů najdete po netu, tohle je fakt jen nakopávací tutoriál :-)
Poznámka: Jak tak koukám, asi budu muset poladit CSS.
Nyní se trochu odchýlím od výše odkazovaného návodu. V NetBeans jsem provedl checkout projektu Apache POI.
Versioning
→
Subversion
→ Checkout
.Skip trunk and checkout it's contents
. Tím se mi
src/
a další objeví přímo ve vybraném adresáři.Create project...
a vybírám Java
→
Java Project with Existing Sources
. Next
…build.xml
.Browse
a najděte adresář, kam jste stáhli
zdrojáky.build.xml
zde již existuje, proto se build skript NetBeans
přejmenoval na nbbuild.xml
. Next
…src
.
Ta neobsahuje (jak je obvyklé) rovnou hierarchii tříd, ale dále se dělí na
kategorie. Proto vyberte jen ty kategorie, které do projektu
chcete. Např.:src/java/
a
src/examples/src/
. Next
, Finish
.Tím jste úspěšně založili projekt z SVN repository.
NetBeans začne projekt rovnou kompilovat, ale pravděpodobně nerozluští
některé reference. Je třeba dodat nějaké knihovny. V mém případě
hledá balíček org.apache.commons.logging.Log
. To je notoricky
známá věc, takže pokud nemáte: stáhnout a přidat
.jar
-ka jako novou knihovnu.
Nyní již kompilace proběhne vpořádku, pouze si překladač stěžuje na podivné volání funkcí,
warning: non-varargs call of varargs method with inexact argument type for last parameter;
za což může tato nezvyklá konstrukce v kódu projektu Apache POI:
Class clazz = (Class) VALUE_EVALS_MAP.get(ptg.getClass()); try { if (ptg instanceof Area3DPtg) { Constructor constructor = clazz.getConstructor(AREA3D_CONSTRUCTOR_CLASS_ARRAY); retval = (OperationEval) constructor.newInstance(new Ptg[] { ptg }); } ...