如何排除资源包被构建到 jar Maven 中?

How to exclude resource package from being build into jar Maven?

嗨,我正在将项目构建到 maven 的 jar 文件中,但我希望一些资源包不包含在该 jar 中。相反,我想构建两个单独的 jar,一个包含项目,另一个包含那些排除的包。怎么做?

假设您正在使用 dependency:copy-dependencies,有两个选项可以帮助您:

  • excludeClassifiers:逗号分隔的要排除的分类器列表。空字符串表示不排除任何内容(默认)。
  • excludeScope 要排除的范围。空字符串表示没有作用域(默认)。

我用它来从我的 Struts2 war 项目中排除 jsp-api.jar。 运行 StrutsTestCase 测试需要这个 jar,但如果它包含在 war 中,它会与 Tomcat lib 目录冲突,后者已经包含 jsp-api.jar

在我的 pom.xml:

中设置我的依赖项
<dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <type>jar</type>
        <scope>provided</scope>        
    </dependency>

我的 maven-dependency 插件是这样的:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/lib</outputDirectory>
                <excludeScope>provided</excludeScope>
            </configuration>
        </plugin>

我已经解决了在 Tomcat

上部署时排除 jar 的问题