【问题标题】:How to run plugin on maven dependency如何在 Maven 依赖项上运行插件
【发布时间】:2013-10-03 04:37:15
【问题描述】:

我正在建立一个 (java) maven 项目,该项目依赖于 Maven 存储库中的一个库(Jettison 等)。而 Jettison 则依赖于 stax。我需要在 stax 上运行一个工具(Jar Jar Links)(以更改命名空间)。如何更改 Maven 项目中传递依赖项的规则?使用 copy-dependencies 目标将我的传递依赖项包含在我的目标文件夹中(我假设这是通常的完成方式)。我假设这是插件将在传递生成的工件上运行的点。

额外的问题:我现在不需要这个,但我将如何改变传递依赖中的 source?我可以使用 mvn dependency:sources 获取源 jar,但是从那里,我不确定正确的方法是什么。

【问题讨论】:

  • “我的传递依赖项正在使用复制依赖项目标包含在我的目标文件夹中(我假设这是通常的做法)” 实际上这是 反模式 Maven 依赖管理应该如何工作。
  • 我从未听说过jarjar,只是阅读了它的简短“它是如何工作的?”我不知道为什么有人会想要使用它。曾经。关于如何使用 Maven,您的问题到处都有危险信号。我的印象是您正在尝试解决一个潜在的问题(无论是什么促使您在现有依赖项中重命名类文件),也许您应该问一个关于这个的问题——也许就Maven 是实现这一目标的工具。

标签: maven


【解决方案1】:

胜利!

似乎至少有两个人比我更不了解 Maven,所以在我报告这篇文章底部的修复之前让我解释一下我在做什么(剧透警告:它看起来是 JarJar 中的一个错误)。

Android 使用 Java,但缺少很多 Java 核心(特别是 javax 类)。 Android DEX 编译器(将 .jars 转换为 Android .dex 文件)甚至不允许您在 java.* 或 javax.* 命名空间中编译内容,因为它(通常)会破坏内容。但是,在某些(许多)情况下,您可能希望包含一些例程——特别是因为它们被现有库使用。最具传奇色彩的是StAX,这就是为什么谷歌发布了一个如何包含它的例子here in the Dalvik repo's wiki。该示例使用 JarJar... 和 ant。当您不使用 repo 时,传递依赖关系并不是真正的问题,因此在 wiki 中没有解决它们。

我能够让 JarJar 使用 Maven 在我的源代码上运行,但无需更改依赖项(和传递依赖项)中的命名空间,这毫无价值。因此我的问题。

我认为 copy-dependencies 插件可能对...复制依赖项并在此过程中运行转换插件很有用。在官方“Maven in 5 minutes”文档中提到了复制依赖项作为一个步骤,所以这似乎是一个好的开始,但可能编写官方文档的人不知道如何使用它:-)。无论哪种方式,它都没有帮助 - 我无法看到在复制罐子时转换罐子的简单方法。

使用来自 Maven 的详细信息,我可以看到 Jar Jar 实际上正确地处理了我的 jars...然后丢弃了结果。它会将转换后的类从我的工件中的传递依赖项与我的其余代码打包,但相反,它“排除”了它们。 Jar Jar 参数是basically undocumented,并且大多数标签甚至都没有在文档中列出,但是我能找到的所有示例都使用带有通配符的部分来告诉它要保留哪些类。至少我认为(认为?)这就是该部分的用途。相反,它似乎随机扔掉东西。基本上,该部分被破坏了。例如,我有:

            <keep>
              <pattern>com.example.**</pattern>
            </keep>

...认为这将保留以 com.example 开头的类。错误的。它保留它想要的任何东西。我在那个地方尝试了一百万件事,直到一个成功:

            <keep>
              <pattern>*.**</pattern>
            </keep>

这只会保留我想要的类——它更新的类和它没有触及的类的原件。请注意,** 甚至不起作用。这是 JarJar 插件的 1.8 版(我发现大多数 pom 使用的版本)。

回去工作。

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 2012-05-23
    • 2022-02-03
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多