RE: Problém s Maven dependency ...

Franta Petr franta na oksystem.cz
Čtvrtek Září 25 10:40:36 CEST 2008


Díky za pomoc

-----Original Message-----
From: konference-bounces na java.cz [mailto:konference-bounces na java.cz] On Behalf Of Filip Jirsák
Sent: Wednesday, September 24, 2008 12:10 PM
To: Java
Subject: Re: Problém s Maven dependency ...

Předefinovat to nepůjde, je to definice packaging war v Mavenu – ve
zdrojácích Mavenu je to soubor
maven-2.0.x\maven-artifact\src\main\resources\META-INF\plexus\components.xml
. Znamenalo by to jedině vytvořit si nový packaging, v něm použít nový
typ a obojí oddědit od stávajícího packaging-war. Jenže tam je zase
problém s tím, že Plexus (IoC, na kterém je postaven Maven) neumí
dědit komponenty z jiného JARu – protože používá k definici komponent
anotace v JavaDocu, ke kterým se nedostane, pokud je objekt mimo právě
zpracovávané zdrojové kódy. Jde to obejít pluginem
http://www.ops4j.org/projects/pax/construct/maven-inherit-plugin/ ,
ale nevím, jestli se vyplatí něco takového dělat, když existuje
funkční workaround.

Filip Jirsák



Dne 24. září 2008 11:11 Franta Petr <franta na oksystem.cz> napsal(a):
> Trochu jsem pátral, ale v mé lokální repositury .m2 jsem nenašel na žádném místě (v JAR souboru i mimo něj) žádný konfigurační soubor obsahující text <addedToClasspath>false</addedToClasspath>. Kde jste získal Vámi popisovanou konfiguraci?
> Jinak ta definici vypadá slibně, ale netuším kde jí předefinovat ...
>
> Díky
>
> -----Original Message-----
> From: konference-bounces na java.cz [mailto:konference-bounces na java.cz] On Behalf Of Filip Jirsák
> Sent: Wednesday, September 24, 2008 8:46 AM
> To: Java
> Subject: Re: Problém s Maven dependency ...
>
> Typ "war" je definován následujícím způsobem:
>
>  <component>
>      <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
>      <role-hint>war</role-hint>
>      <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
>      <configuration>
>        <type>war</type>
>        <includesDependencies>true</includesDependencies>
>        <language>java</language>
> -->        <addedToClasspath>false</addedToClasspath>
>      </configuration>
>    </component>
>
> Není problém v téhle definici? To by znamenalo, že POM typu war není
> možné na classpath přidat…
>
> Filip Jirsák
>
> Dne 24. září 2008 7:21 Franta Petr <franta na oksystem.cz> napsal(a):
>> Myslím si, že problém není WAR, ale dependency typu WAR. Default typ je JAR, takže vynecháním <type>war</type> se nastaví default na JAR a ten samozřejmě neexistuje, proto je typ WAR uveden. Maven dependency plugin pracuje správně v tom, že příkaz mvn dependency:copy-dependencies vykopíruje veškeré dependencies včetně WAR souboru, ale Maven dependency WAR nepřidá do systémových proměnných pro běh testu :-(
>>
>> Vyřešil jsem to tak, že jsem použil právě dependency plugin, kterým na <phase>test-compile</phase> provedu <goal>unpack-dependencies</goal> s definicí WAR souboru. Následně se spustí test, který už najde rozbalené soubory v daném adresáři, které potřebuje kontrolovat. Je to jen obejití buď chyby programu Maven 2.0.9 nebo mé neznalosti programu Maven ...
>>
>> Petr F.
>>
>> -----Original Message-----
>> From: konference-bounces na java.cz [mailto:konference-bounces na java.cz] On Behalf Of Filip Jirsák
>> Sent: Tuesday, September 23, 2008 8:27 PM
>> To: Java
>> Subject: Re: Problém s Maven dependency ...
>>
>> Zdravím,
>> sice jsem dodneška nepochopil,jak si autoři Mavenu představovali
>> používání artifactů, typů, classifierů, attached artifactů a
>> souvisejících záležitostí, ale mám dva tipy: 1. maven-war-plugin má v
>> dokumentaci pro war:war uvedeno, že se .war generuje ve výchozím
>> nastavení jako primární artifact (volba primaryArtifact), takže bych
>> zkusil v závislosti vynechat <type>war</war>. Pokud to nepomůže,
>> nezbývá asi než se podívat do zdrojáků maven-war-pluginu, jak vlastně
>> .war připojuje. Možná by také pomohlo přidat .war artifactu nějaký
>> classifier – zatím mám takový dojem, že Maven špatně rozlišuje, co je
>> primární artifact a co přiložený, pokud se artifacty liší jen typem a
>> ne classifierem.
>>
>> S pozdravem
>>
>> Filip Jirsák
>>
>> 2008/9/23 Franta Petr <franta na oksystem.cz>:
>>> Narazil jsem na problém s dependency:
>>>
>>> Napsal jsem si test, který dělá kontrolu dat oproti DB (překlady, integrita
>>> XSD, atd). Můj problém je v tom, že natahuji soubory XSD pomocí funkce
>>> getResourceAsStream z jednotlivých balíčků a provádím kontrolu dat v nich.
>>> Jestliže si v IDE nastavím cestu na WAR soubor, vše funguje, ale pomocí
>>> Maven to spadne na chybu, kdy funkce getResourceAsStream vrátí null hodnotu.
>>> mvn dependency:list nebo mvn dependency:tree zobrazí, že daná závislost
>>> (WAR) je součástí dependencies. V testu jsem si nechal vypsat proměnné
>>> prostředí a zjistil jsem, že Maven daný WAR soubor nemá v žádné ze svých
>>> classpath proměnných. V pom.xml mám uvedeno
>>> <dependency><groupId>package</groupId><artifactId>artifact-web</artifactId><version>1.0-SNAPSHOT</version><type>war</type><scope>test</scope></dependency>.
>>>
>>>
>>>
>>> Petr F.
>>>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Filip Jirsák
>> filip na jirsak.org
>>
>
>
>
> --
> Filip Jirsák
> filip na jirsak.org
>



--
Filip Jirsák
filip na jirsak.org


Další informace o konferenci Konference