【问题标题】:find dependencies in target/classes instead of local repository?在目标/类而不是本地存储库中查找依赖项?
【发布时间】:2011-01-02 12:26:06
【问题描述】:

总结:我正在寻找一种方法来指示 maven 在目标/类中搜索依赖项,而不是在本地存储库中搜索 jar

假设我有 2 个模块,A 和 B,其中 A 依赖于 B。两者都列在模块 S 中。通常我需要在 S 中运行“mvn install”。我正在寻找一种运行“mvn compile”的方法' 这样当 A 被编译时,它的类路径将包含 ../B/target/classes 而不是 ~/.m2/repository/com/company/b/1.0/b-1.0.jar。

(我的原因是我可以连续编译而无需打包和安装,或者更准确地说,在多个模块上使用'mvn scala:cc')

【问题讨论】:

  • 在 9 年后的 Maven 3.6.1 中,您的问题是否得到了解决?

标签: maven-2 compilation


【解决方案1】:

如果没有可怕的黑客攻击,我认为这是不可能的,这不是 maven 的工作方式。 Maven 使用二进制依赖项,需要一个本地存储库来解决它们。因此,处理这个问题的 Maven 方法是在所有模块上启动一个反应器构建。以防万一,看看Maven Tips and Tricks: Advanced Reactor Options

但是,在开发过程中,您不能像大多数 Java 开发人员一样,只在 IDE 中导入所有项目并使用“项目引用”(即将项目配置为依赖源代码而不是 JAR)吗?这是避免必须install 工件来“查看”修改的常用方法。

如果这是不可能的,并且如果您真的不想将 install 工件放入您的本地存储库,那么您将不得不将您的代码移动到一个独特的模块中。

【讨论】:

  • "在开发过程中,你不能只在 IDE 中导入所有项目" 不幸的是,这禁止在一些重要的上下文中进行开发,例如自动化和命令行环境。在这种情况下,执行mvn install 会慢得多,严重削弱了迭代开发流程。除了“这不是 Maven 的工作方式”之外,还有其他理由吗?
【解决方案2】:

我知道这很烦人。在这里帮助我的绝对是IDE支持。完成 maven 项目导入后,eclipse 和 IntelliJ 很聪明地收集所有依赖项。甚至跨模块依赖项也是实时编译的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2017-12-11
    • 2018-12-23
    • 2016-11-13
    相关资源
    最近更新 更多