2014-04-12 13 views
10

मैं अपने EJB>META-INF से EAR>META-INF फ़ोल्डर में एक startup MBEAN फ़ाइल (startup-client-service.xml) स्थानांतरित करने के लिए, चाहते हैं। मैंने maven-resources-plugin प्लगइन के साथ प्रयास किया लेकिन यह EJB>META-INF से Targetear फ़ोल्डर में फ़ाइल की प्रतिलिपि बनाएँ। लेकिन में बनाया earstartup-client-service.xml फ़ाइल मैं कान> META-INF में META-INF करने के लिए अपने स्टार्टअप फ़ाइल स्थानांतरित कर सकते हैं कैसे META-INFEAR META-INF फ़ोल्डर में एक फ़ाइल को जोड़ने के लिए कैसे - Maven

में उपलब्ध नहीं है?

यह कान की पोम फ़ाइल है।

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

है अपनी परियोजना का पूरा संरचना के बिना और पूर्ण पोम फ़ाइलों के बिना उसका अनुमान लगाना क्या आप अपने निर्माण में क्या कर रहे हैं मुश्किल है । – khmarbaise

+0

@khmarbaise मैं अपने कान की पूरी पोम फ़ाइल अद्यतन करता हूं। मेरी परियोजना मूल रूप से 2 मॉड्यूल है। एक एपीआई है और दूसरा ईजेबी है। – user2771655

उत्तर

1

मैं सुझाव है कि आप $ पर फ़ाइल की प्रतिलिपि करने के लिए तैयार-पैकेज चरण में Maven संसाधनों प्लगइन का उपयोग है {निर्माण .directory}/$ {project.artifactId} - $ {project.version}/मेटा-आईएनएफ फ़ोल्डर जो फ़ोल्डर है जहां अंतिम ईएआर से ज़िप किया गया है। चरण तैयार-पैकेज ईएआर को ज़िप्ड करने से ठीक पहले है।

+0

प्लगइन के बाद कलाकृतियों की प्रतिलिपि बनाने के बाद कुछ निष्पादित करने के लिए मेवेन-कान-प्लगइन में हुक करने का कोई तरीका है, लेकिन इससे पहले कि यह उन्हें ज़िप करता है? मुझे एक फ़ाइल जोड़ने की ज़रूरत है जो आर्टिफैक्ट की मेनिफेस्ट फाइलों पर आधारित है। http://goo.gl/gD3Tcu – froginvasion

+0

कान उत्पन्न होने के बाद आप मेवेन अनपैक प्लगइन का उपयोग कर सकते हैं और फिर फिर से पैक कर सकते हैं? मेरे पास हाथ रखने का कोई उदाहरण नहीं है लेकिन यह इंटरनेट पर छेड़छाड़ है ... – mekondelta

+0

धन्यवाद, यह वास्तव में एक दृष्टिकोण होगा। मैंने अपनी बिल्ड प्रक्रिया के हिस्से के रूप में फ़ाइल को कहीं भी प्रकाशित/अपलोड करना चुना है, क्योंकि मुझे इस फ़ाइल को कहीं और कहीं भी प्राप्त करने की आवश्यकता है (अन्यथा मुझे फिर से कान को अनपैक करना होगा और फ़ाइल में जाना होगा) – froginvasion

17

src/main/resources के बजाय src/main/application पर फ़ाइलों को जोड़ने का सही तरीका है। आप एक अलग earSourceDirectory कॉन्फ़िगरेशन भी निर्दिष्ट कर सकते हैं।

+0

यह है मेवेन-कान-प्लगइन प्रलेखन: 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> 
... 
संबंधित मुद्दे

 संबंधित मुद्दे