2014-04-12 29 views
10

Ben EAR>META-INF klasöre, benim EJB>META-INF bir startup MBEAN dosyayı (startup-client-service.xml) taşımak istiyorum. maven-resources-plugin eklentisiyle denedim, ancak dosyayı EJB>META-INF'dan Target klasörüne ear klasörüne kopyalayın. Ama içinde startup-client-service.xml dosya kulak> META-INF içine META-INF benim başlangıç ​​dosyasını taşımak nasıl- Maven

META-INF mevcut değildir ear inşa?

Bu kulak pom dosyasıdır. Aşağıda

<?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> 
proje çalışma alanı ekran yakala

Here is the project structure

+0

var ve tam pom dosyaları olmadan bunu Yapınızda ne yaptığını tahmin etmek zor . – khmarbaise

+0

@khmarbaise Kulağımın tüm pompasını güncelliyorum. Projemde temelde 2 modül var. Biri API ve diğeri ejb. – user2771655

cevap

1

denemenizi öneriyor $ 'a dosyayı kopyalamak için hazırlamak-paket aşamasında Maven kaynakları eklenti kullanmak olduğunu {build .directory}/$ {project.artifactId} - $ {project.version}/META-INF klasörü, son EAR'ın sıkıştırıldığı klasördür. Faz hazırlama paketi, EAR'ın sıkıştırılmasından hemen önce.

+0

herhangi bir fikri, eklenti kopyaları kopyaladıktan sonra bir şey yürütmek için maven-kulak-eklentisine bağlanmanın bir yolu var mı, ama onları hızlandırmadan önce mi? Eserin manifest dosyalarına dayanan bir dosya eklemem gerekiyor. http://goo.gl/gD3Tcu – froginvasion

+0

Kulak üretildikten sonra maven unpack eklentisini kullanabilir ve sonra yeniden paketleyebilir misiniz? Elimde bir örneğim yok ama internette çalkalanıyor ... – mekondelta

+0

teşekkürler, bu gerçekten bir yaklaşım olurdu. Bunun yerine dosya oluşturma işleminin bir parçası olarak bir yere yayınlamayı/yüklemeyi tercih ettim, çünkü bu dosyayı başka bir yoldan da almam gerekiyor (başka bir yerde kulağı bir daha açmam ve dosyaya gitmem gerekiyordu) – froginvasion

17

Doğru yol, src/main/resources yerine src/main/application dosyalarına dosya eklemektir. Farklı bir earSourceDirectory yapılandırması da belirleyebilirsiniz. Amaç "kaynaklar" (veya "hazırlamak-paket" kullanmakla mekondelta önerme) ile

+0

maven-ear-plugin belgeleri: https://maven.apache.org/plugins/maven-ear-plugin/ear-mojo.html. Burada, src/main/application'ın earSourceDirectory yapılandırması için varsayılan değer olduğunu görebiliriz. –

0
  • Kullanım faz "süreç-kaynaklar"
  • $ {basedir}/hedef/$ {proje için çıkış dizinini ayarla .artifactId} - $ {project.version}

İşte projenin tam yapısı olmadan tam bir örnek

<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> 
...