Maven Frage zu assembly

  • Themenstarter Themenstarter bygones
  • Beginndatum Beginndatum
B

bygones

Gast
Hi,

wir haben ein grosses Multimodule Projekt, dass in anderen Entwicklungsumgebungen genutzt wird (ne art "Framework").

Nun soll somit aus diesen Projekt verschiedene jars entstehen, die zusammengepackt weitergeben werden.

Zb braucht ein szenario Projekt-A mit allen seinen trans. Abhaengigkeiten (gepackt als ein jar), ein anderes Projekt-B & Projekt-C mit deren trans. Abhaengigkeiten (als ein jar). (Dass es immer ein jar sein muss liegt firmeninternen prozessen zu grunde).

Zwecks Uebersichtlichkeit wollte ich nun auf oberster Ebene ein Projekt einfuegen "Assembly", welches mithilfe versch. Descriptoren die unterschl. assemblies zusammenbaut. Geht das ueberhaupt ? ist es sinnvoll ?
Ich scheitere, da ich nicht weiss, wie ich bei diesem Projekt die Descriptoren schreiben muss, so dass DescriptorA mir Szenario1 von oben baut und DescriptorB Szenario 2. Da das Projekt ja nur ueber Abhaengigkeiten die anderen Projekten / Module kennen wuerde.

Da alles ein MMP ist, koennte man dann doch in der ober pom die versch. Descriptoren ablegen, und dann entweder das eine Module oder die versch. projekte aus versch. Modulen dort eintragen - als Parent kennt er ja seine Pappenheimer... das muesste doch gehen ?

Die erste Loesung faende ich jedoch uebersichtlicher...

oder wie ist allgemein die Handhabung bei sowas ?

Thx
 
Hallo,

Nun soll somit aus diesen Projekt verschiedene jars entstehen, die zusammengepackt weitergeben werden.
Ich würde dann mal zuerst fragen, warum denn nicht mit den Artekfakten aus Maven direkt gearbeitet wird (Repository Manager)?

Aber Ok...Firmen sind manchmal etwas abstruss... ;-)

Zb braucht ein szenario Projekt-A mit allen seinen trans. Abhaengigkeiten (gepackt als ein jar), ein anderes Projekt-B & Projekt-C mit deren trans. Abhaengigkeiten (als ein jar). (Dass es immer ein jar sein muss liegt firmeninternen prozessen zu grunde).
Dazu würde ich das

Maven Shade Plugin - Introduction

empfehlen...
Man kann das auch mit dem Assembly Plugin erreichen...ist aber glaube ich nicht so gut...aber das habe ich mit dem Assembly Plugin nocht nicht Probiert...

Zwecks Uebersichtlichkeit wollte ich nun auf oberster Ebene ein Projekt einfuegen "Assembly", welches mithilfe versch. Descriptoren die unterschl. assemblies zusammenbaut. Geht das ueberhaupt ? ist es sinnvoll ?
Also Grundsätzlich wiederspricht das der "Maven Philosophie" One Project -> One Artifact...

Ich scheitere, da ich nicht weiss, wie ich bei diesem Projekt die Descriptoren schreiben muss, so dass DescriptorA mir Szenario1 von oben baut und DescriptorB Szenario 2. Da das Projekt ja nur ueber Abhaengigkeiten die anderen Projekten / Module kennen wuerde.
Mit mehreren Descriptoren wirst Du da nicht richtig zum Ziel kommen...Du musst zwei oder mehr executions für das Plugin definieren und unterschiedliche Descriptoren nutzen (wenn man das Assembly Plugin nutzt)...

Aber beim shade-plugin wirst Du das genauso machen müssen mit zwei oder mehre Executions...

Gruß
Karl Heinz Marbaise
 
Würde für die jeweiligen Assemblies eigene POMs verwenden(oder mehrere Assemblies in ein Modul zusammenfassen), müssen auch nicht top Module sein, sodnern eben da wo sie hin gehören.

Ach ja, das Assembly Plugin kann das sehr gut 🙂
Die Assembly Descriptoren sind zwar gewöhnungsbedürftig, aber wenn man den dreh mal raus hat 😉
Wichtig ist, dass man die attached und single goals des assembly plugins nciht verwendet.
jar-with-dependencies empfehle ich da als verdefinierten Descriptor.

Also Grundsätzlich wiederspricht das der "Maven Philosophie" One Project -> One Artifact...
Die hat man doch schon längst aufgeweicht, Build-helper Plugin, Assembly Plugin,... 😉
 
Zuletzt bearbeitet von einem Moderator:
danke euch - werd ich mal probieren.

Aber Ok...Firmen sind manchmal etwas abstruss...
nichtmal wirklich die Firma - eher der Kunde... liegt darin v.a. begründet, dass ich ein seit Jahren etabliertes System auf Maven umstellen will.
Damit dies v.a. nach aussen kommuniziert werden kann stellen wir erstmal intern um, aber nach aussen bleibt erstmal alles beim alten - also auch dieses "mehrere jars, aber nicht alle jars" etc

Also Grundsätzlich wiederspricht das der "Maven Philosophie" One Project -> One Artifact...
bzw auch bei test-jar erstellen 😀
 
Hallo,

Ach ja, das Assembly Plugin kann das sehr gut 🙂
Die Assembly Descriptoren sind zwar gewöhnungsbedürftig, aber wenn man den dreh mal raus hat 😉
Wichtig ist, dass man die attached und single goals des assembly plugins nciht verwendet.
jar-with-dependencies empfehle ich da als verdefinierten Descriptor.
Ja stimmt...jar-with-dependencies...hatte ich völlig vergessen..;-(

Ja Ja die Descriptoren...ich nutze einige...bin Deiner Meinung...

Die hat man doch schon längst aufgeweicht, Build-helper Plugin, Assembly Plugin,... 😉
Build-Helper Plugin habe ich bisher einmal verwendet...Ok Ok...Assembly schon viel öfter ;-)...

Gruß
Karl Heinz Marbaise
 
mhm ich bekomms nicht hin dass ich zb die pom.xmls beim assembly ausschliesse...

ich nutze das jar-with-dependencies, will aber im ziel jar keine pom.xml drin haben (momentan schmeisst er das alles in META-INF/maven/groupId/artifactId).

wie kann ich das unterbinden ?

Code:
<build>
		<plugins>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2-beta-5</version>
				<configuration>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
					<fileSets>
						<fileSet>
							<excludes>
								<exclude>**/pom.*</exclude>
							</excludes>
						</fileSet>
					</fileSets>
				</configuration>
			</plugin>
		</plugins>
	</build>
geht nicht
 
naja - machen das ganze halt unnötig grösser.

da diese jars irgendwo in ein System geworfen werden und dort nix mit den poms gemacht wird, halte ich sie halt für unnötig
 
Wichtig ist, dass man die attached und single goals des assembly plugins nciht verwendet.
wie ist dann der "richtige" Einbindung des assemblies.

Wenn ich meinen build mit [c]mvn clean install assembly:assembly[/c] so starte baut er in der assembly phase ja alle projekte nochmals obwohl sie gerade eben gebaut wurden. Soweit ich es verstanden habe kann man dies mit dem "single" goal unterbinden.

also warum nicht das single goal ?

Der (hudson)job der die Assemblies baut läuft 1x nachts ... soll der dann "mvn clean assembly:assembly" einfach rufen ?

und noch was:
ein artefact des assemblies soll ins maven-repository deployed werden... dafuer kann ich dann das deploy:deploy-file nehmen - richtig ?
 

Neue Themen


Zurück
Oben