Mitenkähän tuo Netbeans projektinhallinta oikein toimii ?
Jos haluan rakentaa yleiskäyttöisen luokkakirjaston, jota voi käyttää useissa projekteissa, minne ja miten sellainen pitäisi luoda ?
Erehdyin kokeilemaan sellaista, että loin oman hakemiston tuollaisille kaikkien projektien ulkopuolelle, jotta ne eivät olisi sidottuja johonkin määrättyyn projektiin, ja linuxin tiedostolinkkien avulla (ln -s mikälinkataan minnelinkataan) laitoin ne näkymään niihin projekteihin, joissa noita oli tarkoitus käyttää.
Mutta sitten selvisi ikävä tosiasia: Noin EI pidä tehdä! NetBeans yrittää kääntää jokaisen .java -päätteisen tiedoston projektin src -hakemistosta JA sen kaikista alihakemistoista vaikkei projektissa mikään tiedosto viittaisi näihin kirjastoihin import -lauseella !
Minne siis pitää laittaa sellaiset luokkatiedostot (xxxxx.java) jiden halutaan olevan käytettävissä import -lauseella, mutta joiden EI haluta tulevan automaattisesti mukaan käännökseen jos niihin EI viitata import -lauseella ?
Vertai1un vuoksi: esim.Delphissähän .dpr -projektitiedosto määrittelee käytettävät UNITit ja niiden sijainnit. Yksittäiset UNITit voivat toki uses -lauseella käyttää muita UNITeja, mutta joko 1) niidenkin on oltava .dpr -tiedostossa listattuna 2) niiden on oltava Delphin omia mukanatulevia UNITeja tai 3) niiden on löydyttävä paikoista,jotka määritellään Project options -kohdassa "Unit search directories". Jos jokin mukana oleva unit viittaa sellaiseen toiseen UNITiin, jota ei löydy millään em. 3 tavasta, Delphi antaa tästä ilmoituksen "Unit xxxx not found", eikä käännös onnistu, kunnes käyttäjä on korjannut puutteellisen viittauksen.
NetBeans sensijaan ottaa tosiaan mukaan käännökseen automattisesti projektin src -hakemiston kaikkine alihakemistoineen, sikäli kun niistä löytyy .java -päätteisiä tiedostoja, niin silti, vaikkei niihin viittaa yksikään import -lause.
Jos haluan rakentaa yleiskäyttöisen luokkakirjaston, jota voi käyttää useissa projekteissa, minne ja miten sellainen pitäisi luoda ?
Erehdyin kokeilemaan sellaista, että loin oman hakemiston tuollaisille kaikkien projektien ulkopuolelle, jotta ne eivät olisi sidottuja johonkin määrättyyn projektiin, ja linuxin tiedostolinkkien avulla (ln -s mikälinkataan minnelinkataan) laitoin ne näkymään niihin projekteihin, joissa noita oli tarkoitus käyttää.
Mutta sitten selvisi ikävä tosiasia: Noin EI pidä tehdä! NetBeans yrittää kääntää jokaisen .java -päätteisen tiedoston projektin src -hakemistosta JA sen kaikista alihakemistoista vaikkei projektissa mikään tiedosto viittaisi näihin kirjastoihin import -lauseella !
Minne siis pitää laittaa sellaiset luokkatiedostot (xxxxx.java) jiden halutaan olevan käytettävissä import -lauseella, mutta joiden EI haluta tulevan automaattisesti mukaan käännökseen jos niihin EI viitata import -lauseella ?
Vertai1un vuoksi: esim.Delphissähän .dpr -projektitiedosto määrittelee käytettävät UNITit ja niiden sijainnit. Yksittäiset UNITit voivat toki uses -lauseella käyttää muita UNITeja, mutta joko 1) niidenkin on oltava .dpr -tiedostossa listattuna 2) niiden on oltava Delphin omia mukanatulevia UNITeja tai 3) niiden on löydyttävä paikoista,jotka määritellään Project options -kohdassa "Unit search directories". Jos jokin mukana oleva unit viittaa sellaiseen toiseen UNITiin, jota ei löydy millään em. 3 tavasta, Delphi antaa tästä ilmoituksen "Unit xxxx not found", eikä käännös onnistu, kunnes käyttäjä on korjannut puutteellisen viittauksen.
NetBeans sensijaan ottaa tosiaan mukaan käännökseen automattisesti projektin src -hakemiston kaikkine alihakemistoineen, sikäli kun niistä löytyy .java -päätteisiä tiedostoja, niin silti, vaikkei niihin viittaa yksikään import -lause.
Vastaukset 2
Vanhimmat
Eikö niistä yleiskäyttöistä luokista kannattais tehdä jar-pakkauksia joita sitten liität projektiin mukaan...? Pakkauksia saa mukaan project libraries-kohdasta.
Tuo lisännee käännösvaiheessa classpathiin tuon valitun pakkauksen.
En tiedä netbeansista, mutta eclipsessä ainakin saa filtteröityä source-hakemistojen alihakemistoja tarpeen vaatiessa pois.
Mutta kuten toisessa vastauksessa todetaan, järkevintä on liittää luokkakirjastot projektiin mukaan erillisinä jarreina.