2013-06-26 21 views
14

Mam wielomodułowy projekt maven i próbuję uruchomić modułową część źródłową wtyczki zespołu.Instrukcje źródeł modułów zestawów modułów makr montażu nie zawierają żadnych plików i nie pasują do dołączonych modułów.

Mam modułów "module_parent", "module_a" i "module_assembly".

module_a i module_assembly są dziećmi module_parent.

module_assembly ma deklarowaną zależność pom na module_a.

module_assmebly ma wtyczki montażowej, z assembly.xml patrząc jak:

<?xml version="1.0"?> 
<assembly> 
    <id>bin</id> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <moduleSets> 
    <moduleSet> 
     <useAllReactorProjects>true</useAllReactorProjects> 
     <includes> 
     <include>com.mystuff:module_a</include> 
     </includes> 
     <sources> 
     <fileSets> 
      <fileSet> 
      <outputDirectory>/</outputDirectory> 
      <excludes> 
       <exclude>**/target/**</exclude> 
      </excludes> 
      <directory>/</directory> 
      </fileSet> 
     </fileSets> 
     </sources> 
    </moduleSet> 
    </moduleSets> 
</assembly> <!-- --> 

mam wyraźnego uzależnienia w module_assembly dla module_a. Zależność w pom module_assembly wygląda następująco:

<dependencies> 
    <dependency> 
     <groupId>com.mystuff</groupId> 
     <artifactId>module_a</artifactId> 
     <version>1.0</version> 
     <type>pom</type> 
    </dependency> 
</dependencies> 

Błąd otrzymuję od pakietu mvn z debugowanie włączone jest:

[DEBUG] All known ContainerDescritporHandler components: [metaInf-services, plexus, metaInf-spring, file-aggregator] 
[DEBUG] No dependency sets specified. 
[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
o 'com.mystuff:module_a' 

[DEBUG] Cannot find ArtifactResolver with hint: project-cache-aware 
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException 
     role: org.apache.maven.artifact.resolver.ArtifactResolver 
    roleHint: project-cache-aware 
     at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:257) 
     at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:233) 
     at 
    <snip> 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: java.util.NoSuchElementException 
     at java.util.Collections$EmptyIterator.next(Collections.java:3006) 
     at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253) 
     ... 43 more 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
<snip> 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2:single (make-assembly) on project apm-server-distribution: Failed to create assembly: Error creating assembly archive bin: You must set at least one file. -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2:single (make-assembly) on project apm-server-distribution: Failed to create assembly: Error creating assembly archive bin: You must set at least one file. 

Myślę, że głównym problemem jest to linia ostrzeżenie:

[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
    o 'com.mystuff:module_a' 

Jak mogę to poprawić?

+0

Czy pom.xml dla module_assembly mają wyraźną zależność od module_a (czyli w jego '<>' Zależności strofy – noahlz

+0

tak, ma wyraźną zależność.Załąłem to powyżej w 2. zestawie formatowania "kodu" – marathon

Odpowiedz

11

Jeśli moduł_zespołu nie ma odwołania podrzędnego do modułu, to nie jest liczony jako moduł. Uwaga: treść dotyczy tutaj tylko dzieci: http://maven.apache.org/plugins/maven-assembly-plugin/advanced-module-set-topics.html

Jeśli chcesz to zrobić, musisz użyć metody dependencySet zamiast moduleSet.

PS - Dziękuję za nagrodę!

+0

, ale dependencySet pozwala tylko na pliki JAR, które należy uwzględnić, prawda? Po co jestem niektóre luźne pliki XML i właściwości pływające w src/main/resources w innych modułach – marathon

+1

Możesz użyć fileSet do dołączenia plików innych niż JAR. –

1

Co próbujesz nie działa, ponieważ module_a nie jest modułem z module_assembly.

Oto kilka pomysłów, co można zrobić:

  • zawiera odpowiednie pliki do słoika (może plugin źródło pomaga) i używają dependencySet.
  • Zmień swoją budowę modułową, dzięki czemu module_assembly jest rodzicem i module_parent i module_a są Submoduły. Oczywiście, struktura zależności pozostaje taka, jaka jest.
  • Wystarczy użyć zestawu plików w zestawie ze względnymi ścieżkami, które wskazują na inny projekt (brzydki!)
2

Właśnie debugowałem wtyczkę zespołu, ponieważ mam podobny problem, i myślę, że problem jest <useAllReactorProjects>true</useAllReactorProjects>. Na dodatek jest też tag <includeSubModules>, który prawdopodobnie jest tym, czego potrzebujesz.

2

on pracował dla mnie za pomocą następującej konfiguracji:?

<includeSubModules>false</includeSubModules> 
    <useAllReactorProjects>true</useAllReactorProjects>