2014-04-12 3 views
10

나는 EAR>META-INF 폴더, 내 EJB>META-INF에서 startup MBEAN 파일 (startup-client-service.xml)을 이동하려는. maven-resources-plugin 플러그인으로 시도했지만 EJB>META-INF에서 Target까지 ear 폴더의 파일을 복사합니다. 그러나 내장 된 ear 파일은 사용할 수 없습니다. META-INF- 메이븐

시작 파일을 META-INF로 귀에> META-INF로 옮길 수 있습니까?

이것은 귀의 파일입니다. 다음은

<?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 내 귀의 전체 POM 파일을 업데이트합니다. 내 프로젝트에는 기본적으로 2 개의 모듈이 있습니다. 하나는 API이고 다른 하나는 ejb입니다. – user2771655

답변

1

내가 제안 당신이 $로 파일을 복사 할 준비 패키지 단계에서 메이븐 자원 플러그인을 사용을하다 {구축 .directory}/$ {project.artifactId} - $ {project.version}/META-INF 폴더는 최종 EAR이 압축 된 폴더입니다. 단계 준비 패키지는 EAR이 압축되기 바로 전에 있습니다.

+0

플러그인이 artifacts를 복사 한 후 무언가를 실행하기 위해 maven-ear-plugin에 연결하는 방법이 있는지, 이슈의 매니페스트 파일을 기반으로 파일을 추가해야합니다. http://goo.gl/gD3Tcu – froginvasion

+0

귀가 어쩌면 생성 된 다음 다시 팩 한 후 메이븐 언팩 플러그인을 사용할 수 있습니까? 나는 손을 보여줄 모범이 없지만 인터넷에 만연해 있습니다 ... – mekondelta

+0

감사합니다. 실제로 접근 방법이 될 것입니다. 내가이 파일을 다른 곳으로 가져 가야하기 때문에 (다른 곳에서 다시 귀를 풀어 파일에 도달해야 할 필요가 있기 때문에) 빌드 프로세스의 일부로 파일을 게시/업로드하려고했습니다. – froginvasion

17

src/main/resources 대신 src/main/application에 파일을 추가하는 것이 올바른 방법입니다. 다른 earSourceDirectory 구성을 지정할 수도 있습니다. 목표 "자원"(또는 "준비 패키지"를 사용 mekondelta 제안)와

+0

이것은입니다. maven-ear-plugin 문서 : https://maven.apache.org/plugins/maven-ear-plugin/ear-mojo.html. src/main/application이 earSourceDirectory 구성의 기본값임을 알 수 있습니다. –

0
  • 사용 단계 "프로세스 자원"
  • 는 $ {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> 
...