T
tuxedo
Gast
Hallo zusammen,
bin gerade kurz davor an Maven und dem Assembly-Plugin zu verzweifeln...
Es geht um folgendes:
Ich habe ein Serverprojekt. Das besteht zur Zeit aus einem Core und einer Library. Der Core hat diverse Dependencies (MINA, Scannotation, ...). Die Library hat eine Dependency zum Core (LibA von von Core zur Laufzeit dynamisch geladen)
Ich habe beide "Projekte" als "Module" geplant und ein "Mutterprojekt" als zusammenführung beider Projekte gedacht.
Die Pfade sind wie folgt:
Nach einem "mvn package" soll dann im target Verzeichnis folgendes liegen:
So, die pom.xml im Mutterprojekt sieht wie folgt aus:
Der Assembly-Descriptor sieht so aus:
Aktuell landet auch alles da wo's hin soll. Nur hab ich eine Fehlermeldung in der Maven-Console:
Wieso?
Hab es auch schon anders versucht: Hab versucht den Core nach wie vor über "dependencyset" abzufahren und "LibA" als "moduleset". Aber sobald ich mit ModuleSet anfange bekomme ich zahlreiche Meldungen dass LibA doch schon ins Zielverzeichnis kopiert/ bzw. dort schon existient wäre.
Mache ich hier etwas Grundlegend falsch?
Hintergrund dieser Konstellation ist, dass ich in einem späteren Ausbau noch weitere Libs haben werde die dann alle in das deploy Verzeichnis müssen, ich aber mit "Mutter" ein Basisprojekt haben will das mit die Konstellation der Libs definiert.
- Alex
bin gerade kurz davor an Maven und dem Assembly-Plugin zu verzweifeln...
Es geht um folgendes:
Ich habe ein Serverprojekt. Das besteht zur Zeit aus einem Core und einer Library. Der Core hat diverse Dependencies (MINA, Scannotation, ...). Die Library hat eine Dependency zum Core (LibA von von Core zur Laufzeit dynamisch geladen)
Ich habe beide "Projekte" als "Module" geplant und ein "Mutterprojekt" als zusammenführung beider Projekte gedacht.
Die Pfade sind wie folgt:
Code:
Mutterprojekt
|
+--- pom.xml
|
+---+ src
| |
| +--+ distribution
| | |
| | + <files die später in ein Distributionsarchiv sollen>
| |
| +---+ assemble
| |
| + assemble.xml
|
+---+ Core
| |
| +--- pom.xml
|
+---+ LibA
|
+--- pom.xml
Nach einem "mvn package" soll dann im target Verzeichnis folgendes liegen:
Code:
+---+ lib
| |
| +--- Core.....jar
| +--- <weitere dependencies von Core>
|
+---+ deploy
| |
| +--- LibA.....jar
|
+--- <weitere files/ordner aus oben genannten "distribution Verzeichnis">
So, die pom.xml im Mutterprojekt sieht wie folgt aus:
Code:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mydomain</groupId>
<artifactId>Mutter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>Mutterprojekt</name>
<packaging>pom</packaging>
<modules>
<module>Core</module>
<module>LibA</module>
</modules>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<executions>
<execution>
<id>distribution</id>
<goals>
<goal>directory-single</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/assemble/assemble.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.2</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.mydomain.mp</groupId>
<artifactId>Core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.mydomain.mp</groupId>
<artifactId>LibA</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
Der Assembly-Descriptor sieht so aus:
Code:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>distribution</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}</directory>
<includes>
<include>*.bat</include>
<include>*.sh</include>
</includes>
<excludes>
<exclude>README.txt</exclude>
<exclude>NOTICE.txt</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${basedir}/src/distribution</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<includes>
<include>com.mydomain.mp:Core</include>
</includes>
<outputDirectory>lib</outputDirectory>
</dependencySet>
<dependencySet>
<includes>
<include>com.mydomain.mp:LibA</include>
</includes>
<outputDirectory>deploy</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
Aktuell landet auch alles da wo's hin soll. Nur hab ich eine Fehlermeldung in der Maven-Console:
[INFO] [assembly:directory-single {execution: distribution}]
[INFO] Reading assembly descriptor: src/assemble/assemble.xml
[WARNING] Cannot include project artifact: com.mydomain:Mutterom:1.0.0-SNAPSHOT; it doesn't have an associated file or directory.
[WARNING] Cannot include project artifact: com.mydomain:Mutterom:1.0.0-SNAPSHOT; it doesn't have an associated file or directory.
Wieso?
Hab es auch schon anders versucht: Hab versucht den Core nach wie vor über "dependencyset" abzufahren und "LibA" als "moduleset". Aber sobald ich mit ModuleSet anfange bekomme ich zahlreiche Meldungen dass LibA doch schon ins Zielverzeichnis kopiert/ bzw. dort schon existient wäre.
Mache ich hier etwas Grundlegend falsch?
Hintergrund dieser Konstellation ist, dass ich in einem späteren Ausbau noch weitere Libs haben werde die dann alle in das deploy Verzeichnis müssen, ich aber mit "Mutter" ein Basisprojekt haben will das mit die Konstellation der Libs definiert.
- Alex