是否有可能获得maven安装插件来部署ejb客户端jar?

时间:2015-09-11 00:00:46

标签: maven java-ee

在使用Spring多年后,我正在使用EJB 3.2和Maven开发Java EE 7应用程序。我想要的一件事是将EJB Jars与Web应用程序分开部署,以便我可以独立开发。在WAR中包含EJB Jars会导致应用服务器在WAR的上下文中重新定义EJB,我不希望这种情况发生。

规定的方法是让maven使用此指令创建一个客户端jar:

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ejb-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <ejbVersion>3.2</ejbVersion>
                <generateClient>true</generateClient>
                <clientExcludes>
                    <clientExclude>**/*Impl.class</clientExclude>
                </clientExcludes>
            </configuration>
        </plugin>

我从客户端JAR中排除任何Impls。

我遇到的问题是maven在安装阶段没有安装客户端jar。

我可以手动安装它:  mvn install:install-file -Dfile = foo-1.0-client.jar -DgroupId = com.awesome -DartifactId = foo -Dversion = 1.0 -Dpackaging = jar -Dclassifier = client

我摆弄了很多并想出了这个

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <ejbVersion>3.2</ejbVersion>
                    <generateClient>true</generateClient>
                    <clientExcludes>
                        <clientExclude>**/*Impl.class</clientExclude>
                    </clientExcludes>
                </configuration>
                <executions>
                    <execution>
                        <id>package</id>
                        <phase>package</phase>
                        <goals>
                            <goal>ejb</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>install</id>
                        <phase>install</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>

然而,这是不恰当的。这会将客户端安装为新工件,而不是与分类器客户端相同的工件。当您将客户端包含在另一个应用程序中时,您应该使用ejb-client。这将查找包含正常工件foo-1.0.jar的文件夹,并查找具有分类器客户端的内容。

    <dependency>
        <groupId>com.awesome</groupId>
        <artifactId>foo</artifactId>
        <version>${com.awesome.version}</version>
        <type>ejb-client</type>
    </dependency>

难倒在这里,任何想法?

0 个答案:

没有答案