Как мне изменить местоположение ejb-jar.xml в моем проекте maven? - PullRequest
3 голосов
/ 11 ноября 2009

При создании моего EJB-проекта с помощью maven maven ожидает, что файл ejb-jar.xml будет находиться в META-INF /. Тем не мение; Мне нужно иметь возможность поместить его в каталог A / META-INF.

maven-ejb-plugin, по-видимому, не предоставляет параметр для указания, где находится ejb-jar.xml.

Можете ли вы указать мне правильное направление?

Ответы [ 4 ]

2 голосов
/ 11 ноября 2009

Действительно, maven-ejb-plugin не предоставляет никаких параметров для изменения местоположения дескриптора развертывания, который, как ожидается, будет доступен в META-INF/ejb-jar.xml (местоположение жестко закодировано в EjbMojo ) или сборка завершится неудачно во время компоновки EJB 2.X (что имеет смысл).

Таким образом, одним из способов достижения вашей цели будет использование maven-antrun-plugin до этапа упаковки для копирования содержимого directoryA (при условии, что directoryA находится в каталоге ресурсов, например src/main/resources и был скопирован в target/classes) в ожидаемое место (то есть в корень target/classes) и выполните некоторую очистку, что-то вроде этого:

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <phase>prepare-package</phase>
      <configuration>
        <tasks>
          <copy todir="${project.build.outputDirectory}">
            <fileset dir="${project.build.outputDirectory}/directoryA"/> 
          </copy>
          <delete dir="${project.build.outputDirectory}/directoryA"/>
        </tasks>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Я не нахожу это очень чистым, но это работает.

1 голос
/ 14 февраля 2010

Мне нужно было сделать то же самое и заставить его работать, просто добавив дополнительный каталог ресурсов в раздел «build» POM (который находится в дополнении к стандартному расположению java / main / resources):

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/directoryA</directory>
        </resource>
    </resources>
...
</build>
1 голос
/ 26 января 2010

Плагин ищет файл ejb-jar.xml в build.outputdirectory / META-INF, как я мог видеть в исходном файле плагина. частная статическая конечная строка EJB_JAR_XML = "META-INF / ejb-jar.xml"; Можно скопировать требуемый ejb-xml, используя плагин ресурса. ....

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
    <execution>
        <id>copy-resources</id>
        <phase>validate</phase>
        <goals>
            <goal>copy-resources</goal>
        </goals>
        <configuration>
            <outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory>
            <resources>
                <resource>
                    <directory>${project.build.sourceDirectory}/META-INF</directory>
                </resource>
            </resources>
        </configuration>
    </execution>
</executions>

0 голосов
/ 11 ноября 2009

Не работает свойство конфигурации "outputDirectory" (http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory)?. Я вижу, что это было предложено в приведенном выше примере с antrun, однако это свойство конфигурации доступно в самом подключаемом модуле ejb (см. Ссылку) Или вы говорите, что хотите ТОЛЬКО переместить ejb-jar.xml?

...