使用Maven Skinny war选项自动装配Spring Data Repo失败

时间:2014-10-17 19:41:13

标签: spring maven spring-data spring-batch-admin

我的问题类似于this one posted a while ago 当外部库位于EAR的lib文件夹中时,Spring Data Repos的自动装配失败。

当所有罐子都包含在 WEB-INF / lib。中时,接线工作正常 我尝试将'skinnyWar'设置为false,但这会复制EAR和WAR中的jar。

该应用程序使用Spring Batch Admin 1.2.2和Spring Data 1.1 with Spring 3.2.2。 使用的 Maven版本 3.3 。运行时是 Websphere 7.x

我有另一个应用程序,它与skinnywar设置为true完全正常 - 这使用spring-ws,spring-data 4.0.x版本。

WAR POM

    <?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>
    <artifactId>batchadmin-web</artifactId>
    <parent>
    <groupId>com.xyz.interfaces</groupId>
    <artifactId>batch-parent</artifactId>
    <version>1.0.BUILD-SNAPSHOT</version>
    <relativePath>../batch-parent/pom.xml</relativePath>
    </parent>
    <packaging>war</packaging>
    <name>Batch Admin Interface Web</name>
    <dependencies>
<!-- Application specific jars/modules Not included for brevity-->

    </dependencies>

    <build>
            <finalName>springbatch-admin</finalName>
            <outputDirectory>${project.basedir}\src\main\webapp\WEB-INF\classes</outputDirectory>
            <testOutputDirectory>${project.basedir}\src\main\webapp\WEB-INF\classes</testOutputDirectory>
            <plugins>
                    <plugin>
                            <artifactId>maven-war-plugin</artifactId>
                            <version>2.4</version>
                            <configuration>
                                    <archive>
                                             <manifest>
                                                    <addClasspath>true</addClasspath>
                                                    <classpathPrefix>lib/</classpathPrefix>
                                            </manifest>
                                     </archive>
                                       <packagingExcludes>WEB-INF/lib/spring-beans*.jar</packagingExcludes>  
                            </configuration>
                    </plugin>
            </plugins>
    </build>
    </project>

EAR POM内容:

    <?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>
    <artifactId>batchadmin-ear</artifactId>
    <parent>
    <groupId>com.xyz.interfaces</groupId>
    <artifactId>batch-parent</artifactId>
    <version>1.0.BUILD-SNAPSHOT</version>
    <relativePath>../batch-parent/pom.xml</relativePath>
    </parent>
    <packaging>ear</packaging>
    <name>Batch Admin Interface</name>
    <dependencies>
            <dependency>
                    <groupId>com.xyz.interfaces</groupId>
                    <artifactId>batchadmin-web</artifactId>
                    <type>war</type>
                    <version>${project.version}</version>
            </dependency>
    </dependencies>
    <build>
            <finalName>SpringBatchEAR</finalName>
            <plugins>
                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-ear-plugin</artifactId>
                            <version>2.9.1</version>

                            <configuration>
                                    <skinnyWars>true</skinnyWars>
                                    <defaultLibBundleDir>lib/</defaultLibBundleDir>
                                    <modules>
                                            <webModule>
                                                    <groupId>com.xyz.interfaces</groupId>
                                                    <artifactId>batchadmin-web</artifactId>
                                                    <contextRoot>/springbatch-admin</contextRoot>
                                                    <bundleFileName>springbatch-admin.war</bundleFileName>
                                            </webModule>
                                    </modules>

                            </configuration>
                    </plugin>
            </plugins>
    </build>

更新:由于EAR只有一个Web模块,因此对“ WAR类装入器策略”使用“单个类加载器用于应用程序”在Websphere中。这样,我就可以做到这一点。

我想知道如何在不更改classloader选项的情况下完成此工作,因为当存在多个Web模块时,这可能不是首选。

0 个答案:

没有答案