如何从 jasperreports maven 插件中排除 jasperreports 工件

How to exclude jasperreports artifact from jasperreports maven plugin

我的 pom 中有以下插件:

<plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jasperreports-maven-plugin</artifactId>
                    <version>1.0-beta-2</version>
                    <dependencies>                       
                        <dependency>
                            <!-- The dependency specified by the plugin doesn't work so we must provide our own -->
                            <groupId>net.sf.jasperreports</groupId>
                            <artifactId>jasperreports</artifactId>
                            <version>${jasperreports.version}</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>jfree</groupId>
                                    <artifactId>jcommon</artifactId>
                                </exclusion>
                                <exclusion>
                                    <groupId>com.lowagie</groupId>
                                    <artifactId>itext</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                        <!-- Groovy compiler seems to be required but not part of JasperReports' specified dependencies-->
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy-all</artifactId>
                            <version>${groovy.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>com.lowagie</groupId>
                            <artifactId>itext</artifactId>
                            <version>${itext.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

上述插件的1.0-beta-2版本指向1.2.0版本的jasperreports artifact,后者又指向[2.1, )的开放式commons-collections 在 1.0-beta-2 pom:

<dependency>
      <groupId>jasperreports</groupId>
      <artifactId>jasperreports</artifactId>
      <version>1.2.0</version>
    </dependency>

并且在 jasperreports 1.2.0 pom 中:

<dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>[2.1,)</version>
            <scope>compile</scope>
        </dependency>

就我而言,其他人已将一个名为 3.2.1-redhat-7 commons-collections 的工件推送到一个 nexus 存储库。 jasperreports-maven-plugin 指向上面的集合版本,它恰好是一个损坏的版本。有一个有效的 3.2.1 版本的公共集合。我需要排除 jasperreports 工件并强制使用 jasperreports-maven-plugin net.sf.jasperreports。 我已经尝试添加

<dependency>
                            <groupId>org.codehaus.mojo</groupId>
                            <artifactId>jasperreports-maven-plugin</artifactId>
                            <version>1.0-beta-2</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>jasperreports</groupId>
                                    <artifactId>jasperreports</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>

到上面的插件,但它仍然指向相同的 1.2.0 jasperreports,指向一个开放式 commons-collections,构建失败。 但是,如果我在 jasperreports-maven-plugin.pom 中注释掉依赖项 "jasperreports",它会使用 net.sf.jasperreports 中的 jasperreports 并构建良好。 请告诉我。

抱歉没有真正回答(由于缺乏声誉还不能发表评论),但是:
1.
如果你像我一样匆忙, 这是一个解决方法,来自 http://community.jaspersoft.com/questions/967926/issue-maven-plugin-codehaus-dec-9-2015:

You need to add

https://maven.repository.redhat.com/nexus/content/groups/product-ga

as one of your remote repos.

非常感谢joel.witham

2.
我认为 this 回答 Maven dependency management for plugin dependencies

是最有前途的..即不要排除 jasper-1.2 但要确保它使用正确的依赖版本。

试试这个配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jasperreports-maven-plugin</artifactId>
    <version>1.0-beta-2</version>
    ...
    <dependencies>
        ...
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
         <dependency>
            <groupId>jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>1.2.0</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</plugin>