Пользовательский jboss-app.xml с использованием Maven - PullRequest
0 голосов
/ 17 февраля 2011

Я объявил пользовательский jboss-app.xml в моем pom.xml, но плагин генерирует внутренний и пустой jboss-app.xml файл в ear/META-INF.

Я создал свой pom.xml на основе этой статьи со следующим определением:

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <configuration>
        <data-sources>
            <data-source>${artifactId}/src/main/resources/mytest-ds.xml</data-source>
        </data-sources>
        <jboss>${artifactId}/src/main/resources/jboss-app.xml</jboss>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
        <modules>
            <ejbModule>
                <groupId>com.testproject</groupId>
                <artifactId>ejb-project</artifactId>
            </ejbModule>
        </modules>
    </configuration>
</plugin>

Но я не могу справиться со своим обычаем jboss-app.xml. Новый пустой дескриптор (без определенных ejbs) генерируется каждый раз.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011

Вы должны иметь возможность просто включить jboss-app.xml в ваше дерево исходников, и Maven включит его.

Структура каталога вашего проекта для maven-ear-plugin должна выглядеть следующим образом:

|-- pom.xml
`-- src
    `-- main
        `-- application
            `-- META-INF
                |-- application.xml
                `-- jboss-app.xml

Затем просто запустите mvn package, чтобы создать EAR. Предполагая, что упаковка для вашего pom.xml - 'ear', он перетянет jboss-app.xml в ваше получающееся ухо.

Кроме того, я считаю, что ваша конфигурация <datasources>...</datasources> должна быть в тегах <jboss>...</jboss>.

Смотри также: http://maven.40175.n5.nabble.com/Deployment-of-the-jboss-app-xml-file-td45009.html

1 голос
/ 18 февраля 2011

Из документов похоже, что тег jboss запускает генерацию jboss-app.xml.Как насчет пропустить этот тег и создать ear?

0 голосов
/ 20 декабря 2012

Альтернативой может быть получение источников данных через application.xml, как описано здесь .Но поскольку <jarModule> требует наличия полноценного артефакта maven, это более длинный путь (возможно, для серверов приложений, кроме JBoss):

project/ds/pom.xml:

<artifactId>project-ds</artifactId>
<packaging>jar</packaging>

<name>My DataSource</name>

project/ds/src/main/resources/my-ds.xml:

<datasources>
    <local-tx-datasource>
    ...

project/ear/pom.xml (при условии, что драйвер также упакован в EAR):

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>project-ds</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>project-war</artifactId>
        <version>${project.version}</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>${jtds.driver.version}</version>
    </dependency>
</dependencies>
...
<plugin>
    <artifactId>maven-ear-plugin</artifactId>

    <configuration>
        <modules>
            <jarModule>
                <groupId>net.sourceforge.jtds</groupId>
                <artifactId>jtds</artifactId>
                <includeInApplicationXml>true</includeInApplicationXml>
            </jarModule>
            <jarModule>
                <groupId>${project.groupId}</groupId>
                <artifactId>project-ds</artifactId>
                <unpack>true</unpack>
                <uri>/</uri>
                <bundleFileName>my-ds.xml</bundleFileName>
                <includeInApplicationXml>true</includeInApplicationXml>
            </jarModule>
            <webModule>
                <groupId>${project.groupId}</groupId>
                <artifactId>project-war</artifactId>
                <contextRoot>${context.path}</contextRoot>
            </webModule>
        </modules>
    </configuration>
</plugin>

Сгенерирует META-INF/application.xml:

<application>
  <display-name>project-ear</display-name>
  <description>...</description>
  <module>
    <java>jtds-1.2.4.jar</java>
  </module>
  <module>
    <java>my-ds.xml</java>
  </module>
  <module>
    <web>
      <web-uri>project-war-1.0.0.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module>
</application>
...