如何将依赖关系放在maven而不是WEB-INF / lib中

时间:2010-10-11 09:55:09

标签: maven-2 maven

有没有办法把战争的依赖性放在WEB-INF / lib中,而不是放在自定义文件夹中?

我正在使用Maven 2

嗨,我需要的是,从war的依赖列表中,只有一个工件不应放在WEB-INF / lib中,而应放在WEB-INF / bundles /中,其他依赖应放在WEB-INF / lib中

THX

THX给大家,我无法更新到Maven 2.1所以我通过maven-antrun插件做到了)

3 个答案:

答案 0 :(得分:4)

我认为您需要做的是创建依赖项provided并使用mvn copy-dependencies复制它。以下是使用apache commons / lang执行此操作的示例:

<dependencies>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>copydep</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <inherited>false</inherited>
                    <configuration>
                        <includeArtifactIds>commons-lang</includeArtifactIds>
                        <outputDirectory>$project.build.directory/${project.build.finalName}/web-inf/bundles</outputDirectory>
                    </configuration>
                </execution>
            </executions>
            <configuration>
            </configuration>
        </plugin>
    </plugins>
</build>

$project.build.directory/${project.build.finalName}是用于组装战争的工作文件夹)

答案 1 :(得分:1)

Maven war plugin支持广泛的自定义。你的问题不清楚,你究竟想要什么,但this page应该有所帮助。

答案 2 :(得分:0)

你想把这些图书馆放在哪里?您必须小心,因为war structureWEB-INF/lib定义为第三方库的目录。位于此目录中的所有*.jar文件将由容器(例如Tomcat)加载到Classpath中。

更改此目录可能对您的应用程序有害!

这就是为什么我不知道允许您更改此WEB-INF/lib目录的Maven WAR Plugin配置参数。

如果您真的知道自己在做什么,可以尝试使用assembly创建自己的WAR。