# Maven Assembly-Plugin und Dependencies



## JBenutzername (30. Jul 2009)

Hallo,

ich habe ein Maven-Projekt, das aus mehreren Modulen besteht. In drei Modulen soll eine Jar-Datei mit allen Abhängigkeiten erzeugt werden. Leider werden Dependencies eines Moduls nicht mit hinzugefügt, wenn sich diese in einem Modul befinden, von dem das Modul abhängt, und als Scope den Wert system haben (liegen dann in einem lib-Verzeichnis). Wenn Dependencies mit System-Scope direkt im Modul liegen, dass eine Jar-Datei mit Abhängigkeiten erzeugen soll, dann gibt es keine Probleme.

Mein Assembly-Deskriptor:

```
<assembly>
	<id>jar-with-dependencies-xxx</id>
	<formats>
		<format>jar</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<dependencySets>
		<dependencySet>
			<unpack>true</unpack>
			<scope>runtime</scope>
		</dependencySet>
		<dependencySet>
			<unpack>true</unpack>
			<scope>system</scope>
		</dependencySet>
	</dependencySets>
	<fileSets>
		<fileSet>
			<directory>${project.build.outputDirectory}</directory>
		</fileSet>
	</fileSets>
</assembly>
```


----------



## kama (30. Jul 2009)

Hallo,

die erste Frage die mir in den Sinn kommt ist: Warum system-dependencies (bzw. scope = system) ?

EDIT: Jedes der drei Module soll jeweils ein JAR mit allen depdencies bauen ? 

MfG
Karl Heinz Marbaise


----------



## JBenutzername (30. Jul 2009)

kama hat gesagt.:


> Hallo,
> 
> die erste Frage die mir in den Sinn kommt ist: Warum system-dependencies (bzw. scope = system) ?
> 
> ...



Mache Bibliotheken sind nicht "mavenisiert" und teilweise gibt es nicht einmal mehr den Sourcecode. Deshalb benutzen wir den Weg mit dem System-Scope.

a -> b
a -> c
c -> d
c -> e
(x -> y bedeutet: x ist Parent von y)

b, d und e sollen die Jars mit Abh. bauen. In c gibt es die Abhängigkeiten mit System-Scope. Bei b gibt es kein Problem (da a keine Abh. mit System-Scope hat), aber bei d und e fehlen die Abh. aus c, die System-Scope haben.


----------



## maki (30. Jul 2009)

> Mache Bibliotheken sind nicht "mavenisiert" und teilweise gibt es nicht einmal mehr den Sourcecode.


Falls der Quellcode nicht mehr da ist, ist es doch ganz einfach:
Es wird nie wieder neuere Versionen geben, also kannst du die jar ganz einfach "mavenisieren": Einfach in euer zentrales Maven Repo hochladen und gut ist.


----------



## JBenutzername (2. Aug 2009)

Wir haben das jetzt mein einem eigenen Maven-Repository gelöst.


----------

