2014-04-12 92 views
10

我想從我的EJB>META-INF移動startup MBEAN文件(startup-client-service.xml),到EAR>META-INF文件夾。我試着用maven-resources-plugin插件,但它只是將文件從EJB>META-INF複製到Targetear文件夾中。但在內置的earstartup-client-service.xml文件不可用META-INF如何將文件添加到EAR META-INF文件夾 - Maven的

如何將我的啓動文件移動到META-INF into ear> META-INF?

這是耳朵的pom文件。

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

下面是項目工作區屏幕抓取

Here is the project structure

+0

沒有你的項目的完整結構和不完整的POM文件,這是很難猜測你在構建在做什麼。 – khmarbaise

+0

@khmarbaise我更新了我耳朵的整個pom文件。我的項目基本上有2個模塊。一個是API,另一個是ejb。 – user2771655

回答

1

我建議你用在準備封裝階段Maven的資源插件將文件複製到$ {建.directory}/$ {project.artifactId} - $ {project.version}/META-INF文件夾,它是最後一個EAR從中壓縮的文件夾。階段準備包就在EAR壓縮之前。

+0

任何想法,如果有一種方法可以掛鉤到maven-ear-plugin中,在插件複製工件之後,但在將它們拉伸之前執行某些操作?我需要添加一個基於工件清單文件的文件。 http://goo.gl/gD3Tcu – froginvasion

+0

你可以使用maven unpack插件生成耳朵後,然後重新打包?我沒有舉手的例子,但它在互聯網上很流行...... – mekondelta

+0

謝謝,那將是一種確實的方法。我選擇發佈/上傳文件作爲我的構建過程的一部分,因爲我需要將該文件以其他任何方式獲取到其他地方(否則,我需要在其他地方再次拆開耳朵並獲取文件) – froginvasion

17

正確的方法是將文件添加到src/main/application而不是src/main/resources。 您也可以指定不同的earSourceDirectory配置。

+0

這是maven-ear-plugin文檔:https://maven.apache.org/plugins/maven-ear-plugin/ear-mojo.html。在那裏我們可以看到src/main/application是earSourceDirectory配置的默認值。 –

0
  • 使用階段「的過程資源」與目標「資源」(或使用「準備包」的mekondelta命題)
  • 設置輸出目錄爲$ {BASEDIR} /目標/ $ {項目.artifactId} - $ {} project.version

這裏有一個完整的例子

<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> 
... 
相關問題