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 :)



Odpovedet emailem