Zdravím,
classy nemusí být rozbalený, jde pouze o ty resources. Včera jsem
dospěl k následujícímu (stáhne to a rozbalí zip s resources do
testOutputDirectory projektu tedy na classpath pro testy):
<dependency>
<groupId>cz.keklabs.maven</groupId>
<artifactId>xslave</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>resources</classifier>
<type>zip</type>
<scope>test</scope>
</dependency>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-resources</id>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<phase>process-test-resources</phase>
<configuration>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
* <overWriteIfNewer>true</overWriteIfNewer>
* <includeClassifiers>resources</includeClassifiers>
<includeGroupIds>${project.groupId}</includeGroupIds>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
Ale nerozumím tomu, jak má fungovat *<overWriteIfNewer>*, v dokumentaci
k tomu moc není. Myslel jsem, že se to bude rozbalovat jen tehdy, pokud
se stáhne novější verze ZIPu, ale zatím mám pocit, že se to rozbaluje
pokaždé, což při stovkách až tisících souborech, které zabírají celkem
kolem 30MB v rozbaleném stavu není zrovna efektivní při vývoji, abych s
každým spuštěním testu toto provedl.
Na netu jsem našel hromadu lidí, kteří mají stejný problém jako já, ale
nikdo neměl řešení, jak měnit *maven.test.classpath*, případně
*maven.compile.classpath* přidáním dependency na nějaký adresář.
Řešení mám tedy zatím 2, ale ani jedno není ideální:
1) viz ukázka výše - ale nevím, jak zabránit neustálému rozbalovaní
2) nebo
http://maven.apache.org/plugins/maven-surefire-plugin/examples/additional-classpath.html
- ale zde narazím na plugin m2eclipse, protože ten pak tuto cestu nemá
nastavenu ve svém classpath-containeru projektu a tudíž nelze pak testy
pouštět přímo z prostředí Eclipse, bez dodatečné manuální configurace
projektu.
Takže jsem se pustil do studia, jak se píší pluginy a možná se pokusím
rozšířit *dependency-plugin* o to, co potřebuji.
Petr
Dusan Zatkovsky napsal(a):
Ahoj.
Priznam sa, ze uplne nerozumiem vete:
z ní potřebují mít nějaká konfigurační XML na classpath,
ale přitom musí být rozbalená v adresáři.
Kto musi byt rozbaleny v adresari? Len resources, alebo aj .class-y?
Ak len resources - kolko ich je? Neslo by to ojekabatit tak, ze by sa v main()
ulozili z .jar-u na disk?
Offtopic:
za javovske resources by som najradsej niekoho nakopol. Co projekt, to
resources na inom url ( se aplikacia, ee aplikacia, se aplikacia s ws
klientom, ... ). Uz som dospel do stavu, ze som si napisal vlastny
ResourcesHelper a ten vyhladava resources na 4 roznych prefixoch, pretoze
inak by som sa z toho posral ( napr. pridam do aplikacie ws klienta a hop -
null pointer exceptions len taky fukot pretoze resources sa presunuli z /
do /META-INF ...).
začínám si hrát s Maven a nemohu prokopnout jeden problém.
Vitaj v klube :)