2014-02-13 6 views
6

Ich weiß, dass es in Bezug auf dieses Thema viele andere Frage sind, habe ich gesucht und sie alle gelesen, aber noch nicht so weit geholfen haben.Maven Remote-Ressource Ausgabe Plugin

Die pom für Shared-Ressourcen wie folgt aussehen

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.myorganization</groupId> 
     <artifactId>myapp</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <artifactId>myapp-resources</artifactId> 
    <name>Resources Bundle</name> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-remote-resources-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bundle</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins>  
    </build> 
</project> 

Es im Grunde sagt: alles abholen Sie im Ressourcenverzeichnis hat, und es ist wirklich nicht, dass alle Ressourcen in der Wurzel von Glas am Ende Datei. mit der remote-resources.xml auch in jar unter META-INF/manifest Verzeichnis platziert. Also, alles scheint gut und den Erwartungen entsprechend.

nun der andere, härtere, nicht Teil arbeiten. Der Auszug von pom-Datei für das Modul der freigegebenen Ressourcen unter Verwendung der oben angegebenen

es
<plugin> 
       <artifactId>maven-remote-resources-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>process-remote-resources</id> 
         <goals> 
          <goal>process</goal> 
         </goals> 
         <configuration> 
          <resourceBundles> 
           <resourceBundle>com.myorganization:myapp-resources:1.0-SNAPSHOT</resourceBundle> 
          </resourceBundles> 
          <outputdirectory>${project.build.directory}/shared-resources</outputdirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

So, hier sagt, verarbeiten die Ressourcen von Resource und legen sie in dem gemeinsam genutzten Ressourcen-Verzeichnis. Aber nichts passiert. Und wenn ich versuche, mvn remote-resources:process auszuführen, habe ich die Fehlermeldung erhalten, dass Parameter für resourceBundles fehlen oder ungültig sind. Wenn ich mvn install laufen lasse, gibt es keinen Fehler, aber wenn ich versuche, alles von shared-resources Verzeichnis zu kopieren (Maven Resources plugin), überspringt es das als nicht vorhandenes Ressourcenverzeichnis.

Außerdem habe ich versucht, den falschen Namen für Resource zu setzen und das gab mir einen sofortigen Fehler, dass es nicht vorhanden ist, so bin ich sicher, dass ich richtig Resource angegeben haben.

Kann mir jemand aufklären? Was mache ich falsch? Vielen Dank.

EDIT: Hinzufügen der Teil des pom Referenzierung gemeinsam genutzten Ressourcen wie dependecy

<dependency> 
      <groupId>com.myorganization</groupId> 
      <artifactId>myapp-resources</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 

EDIT2: den Inhalt von Remote-resources.xml innerhalb gemeinsam genutzter Ressourcen jar enthalten Hinzufügen:

<?xml version="1.0" encoding="UTF-8"?> 
<remoteResourcesBundle xsi:schemaLocation="http://maven.apache.org/remote-resources/1.1.0 http://maven.apache.org/xsd/remote-resources-1.1.0.xsd" 
    xmlns="http://maven.apache.org/remote-resources/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <sourceEncoding>UTF-8</sourceEncoding> 
</remoteResourcesBundle> 

Sollte dies eine so (mit Ausnahme der Quellencodierung Einstellungen) leer sein?

EDIT3: ich einen Blick auf dem XSD-Schema für remote-resource.xml verwendet genommen habe und es scheint dies nicht leer sein sollte, aber enthält die Liste der Remote-Ressourcen im Prozess Ziel verwendet werden. Das würde bedeuten, dass diese Datei nicht korrekt erzeugt wird.

Edit4: Anbringen des geworfenen Fehler beim mvn remote-resources:process Ausführung:

The parameters 'resourceBundles' for goal org.apache.maven.plugins:maven-remote-resources-plugin:1.5:process are missing or invalid -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-remote-resources-plugin:1.5:process (default-cli) on project lte-troubleshoting-solution: The parameters 'resourceBundles' for goal org.apache.maven.plugins:maven-remote-resources-plugin:1.5:process are missing or invalid 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:220) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'resourceBundles' for goal org.apache.maven.plugins:maven-remote-resources-plugin:1.5:process are missing or invalid 
     at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:581) 
     at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:534) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:97) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
     ... 19 more 

Und was auch interessant ist, so scheint es, dass die outputDirectory Einstellung in der Plugin-Konfiguration wird überhaupt nicht, da in der Debug aufgenommen log Ich kann sehen, dass die outputDirectory Einstellung auf den Standardwert gesetzt ist.

Antwort

9

Ich habe am Ende eine Lösung gefunden. Das Problem war in der Tat, dass ich explizit angeben musste in der Pom-Konfiguration remote-resources.xml ordnungsgemäß generiert und später in der Prozessziel, um alle Ressourcen in der remote-resource.xml aufgeführten aufzunehmen.

So sollte die endgültige pom für Shared-Ressourcen-Modul wie folgt aussehen (wenn Sie enthalten alles, was wollen):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.myorganization</groupId> 
     <artifactId>myapp</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <artifactId>myapp-resources</artifactId> 
    <name>Resources Bundle</name> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-remote-resources-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bundle</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <includes> 
         <include>**/*.*</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins>  
    </build> 
</project> 

Zusätzliche Anmerkung Es scheint, dass outputDirectory für process Ziel keine Auswirkungen hat, Ressourcen werden auf dem Standardpfad entpackt, der im Plugin angegeben ist.

1

mit der Dokumentation des Plug-ins prüfen here, kann ich keine offensichtlichen Fehler sehen.

Was bedeutet com.myorganization:myapp-resources:1.0-SNAPSHOT falsch sein muss/irgendwie gebrochen.

Stellen Sie sicher, dass Sie diese Abhängigkeit in Ihrem lokalen Repository wirklich haben. Wenn Sie es nicht haben, stellen Sie sicher, dass Maven es von irgendwo herunterladen oder lokal installieren kann.

+0

Ich habe das als Abhängigkeit in der Pom-Konfiguration aufgeführt und keine Beschwerden. Und dieses spezielle Jar ist in meinem lokalen Repository installiert. Ich werde meinen ursprünglichen Beitrag bearbeiten, um diesen Teil hinzuzufügen. – htomek

+0

Können Sie bitte die genaue Fehlermeldung hinzufügen? Schau auch, ob du vorher irgendwelche anderen Fehler finden kannst (vielleicht ist es ein Folgeproblem). Versuchen Sie schließlich, Maven mit '-X' zu starten, um die Debugausgabe zu erhalten. Vielleicht würde das ein paar nützliche Informationen enthalten. –