2014-04-12 16 views
10

voglio spostare un file (startup-client-service.xml)startup MBEAN dal mio EJB>META-INF, nella cartella EAR>META-INF. Ho provato con il plugin maven-resources-plugin ma è sufficiente copiare il file da EJB>META-INF a Target nella cartella ear. Ma nel costruito ear file startup-client-service.xml non è disponibile in META-INFCome aggiungere un file a EAR cartella META-INF - Maven

Come posso spostare il mio file di avvio di META-INF nell'orecchio> META-INF?

Questo è il file pom dell'orecchio.

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>com.testapp</groupId> 
    <artifactId>my-client-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 

<name>Test app EAR</name> 
<artifactId>my-client-ear</artifactId> 

<packaging>ear</packaging> 

<dependencies> 

    <dependency> 
     <groupId>com.testapp</groupId> 
     <artifactId>my-client-ejb</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>ejb</type> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <version>2.8</version> 
      <configuration> 
       <defaultLibBundleDir>lib</defaultLibBundleDir> 
       <modules> 
       </modules> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>META-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>${project.parent.basedir}/ejb/src/main/resources/META-INF</directory> 
           <filtering>true</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId> 
             org.apache.maven.plugins 
            </groupId> 
            <artifactId> 
             maven-ear-plugin 
            </artifactId> 
            <versionRange> 
             [2.8,) 
            </versionRange> 
            <goals> 
             <goal> 
              generate-application-xml 
             </goal>           
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <ignore></ignore> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<profiles> 
    <profile> 
     <id>copy_bundle</id> 
     <properties> 
      <install.dir>${jboss.dir}\server\default\deploy</install.dir> 
     </properties> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>Copying bundle to destination folder</id> 
          <phase>package</phase> 
          <goals> 
           <goal>run</goal> 
          </goals> 
          <configuration> 
           <tasks> 
            <copy 
             file="${project.build.directory}/${project.build.finalName}.${project.packaging}" 
             overwrite="true" todir="${install.dir}" /> 
           </tasks> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Di seguito si riporta la schermata di lavoro del progetto afferrare

Here is the project structure

+0

senza la struttura completa del progetto e senza i file completi pom è difficile indovinare che cosa si sta facendo nel vostro accumulo . – khmarbaise

+0

@khmarbaise Aggiorno l'intero file pom del mio orecchio. Il mio progetto ha fondamentalmente 2 moduli. uno è API e l'altro è ejb. – user2771655

risposta

1

vi consiglio di utilizzare le risorse plugin di Maven in fase di preparazione-pacchetto per copiare il file al $ {build .directory}/$ {project.artifactId} - $ {project.version}/cartella META-INF che è la cartella da cui viene estratto l'EAR finale. Il pacchetto di preparazione della fase è appena prima che l'EAR sia compresso.

+0

Qualche idea se c'è un modo per agganciare il plug-in di maven-ear per eseguire qualcosa dopo che il plugin copia le risorse, ma prima di chiuderle? Devo aggiungere un file basato sui file manifest del file artefatto. http://goo.gl/gD3Tcu – froginvasion

+0

Potresti usare il plugin decomprimere Maven dopo che l'orecchio è stato generato e poi ricomporre? Non ho un esempio da dare ma è diffuso su internet ... grazie – mekondelta

+0

, sarebbe davvero un approccio. Ho scelto di pubblicare/caricare il file da qualche parte come parte del mio processo di compilazione, perché ho bisogno di ottenere questo file da qualche altra parte in qualsiasi modo (altrimenti avrei bisogno di decomprimere l'orecchio di nuovo da qualche altra parte e ottenere il file) – froginvasion

17

Il modo corretto è aggiungere file a src/main/application anziché a src/main/resources. È inoltre possibile specificare una diversa configurazione earSourceDirectory.

+0

Questo è la documentazione di maven-ear-plugin: https://maven.apache.org/plugins/maven-ear-plugin/ear-mojo.html. Qui possiamo vedere che src/main/application è il valore predefinito per la configurazione earSourceDirectory. –

0
  • Utilizzare la fase di "processo-risorse" con l'obiettivo "risorse" (o proposizione mekondelta di utilizzare "preparare-package")
  • impostare la directory di output per $ {basedir}/target/$ {progetto .artifactId} - $ {} project.version

Ecco un esempio completo

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory> 
          ${basedir}/target/${project.artifactId}-${project.version} 
         </outputDirectory> 
         <resources> 
          <resource> 
           <directory>${project.parent.basedir}/ejb/src/main/resources/META-INF</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
...