gpt4 book ai didi

ivy - 如何在没有 IVY 中提供的运行时库的情况下复制运行时库

转载 作者:行者123 更新时间:2023-12-04 18:47:38 26 4
gpt4 key购买 nike

我以为我不需要问这个,但我没有任何进展。

这个问题的解决方案:
How are maven scopes mapped to ivy configurations by ivy实际上解决了问题,但在其理论部分。

我有这个配置:

<conf name="compile"  description="???" />
<conf name="runtime" description="???" extends="compile" />
<conf name="test" description="???" extends="runtime" />
<conf name="provided" description="???" />

假设我有这个依赖:
<dependency org="org.apache.tomcat" name="servlet-api" rev="6.0.16" transitive="false" />

我想要的是:当我在捆绑之前调用 ivy:retrieve 将库复制到 .war lib 目录时,我只想复制所有运行时(并隐式编译)但不复制 servlet-api。

那么如何使用 ivy:retrieve 呢?
<ivy:retrieve conf="WHAT_TO_PUT_HERE" />

以及如何配置依赖项:
<dependency conf="WHAT_IS_THE_CONF_MAPPING" org="org.apache.tomcat" name="servlet-api" rev="6.0.16" transitive="false" />

我在这里停滞不前,所以请任何帮助将不胜感激。

知道 servlet-api 的 ivy.xml 定义了工件
conf="master"

所以我认为问题是如何“真正”将提供的maven范围映射到提供的IVY配置。

最佳答案

这是您将依赖项映射到本地“提供”配置的方式:

<dependency org="org.apache.tomcat" name="servlet-api" rev="6.0.16" conf="provided->master"/>

配置映射的工作方式如下:
provided->master
^ ^
| |
Local Remote
config config

正如答案中所解释的,特殊的“主”配置仅包含此模块本身发布的工件,没有传递依赖项:
  • How are maven scopes mapped to ivy configurations by ivy

  • 这意味着不需要“transitive=false”属性。

    更新

    如何使用配置取决于您。第一个选项更简单,但我更喜欢第二种方法,因为我的配置报告与我的类路径内容匹配

    选项1

    您可以按如下方式创建单个类路径:
    <ivy:cachepath pathid="compile.path" conf="compile,provided"/>

    然后可以在 javac 任务中使用它,如下所示:
    <javac ... classpathref="compile.path">
    ..

    选项 2

    或者我更喜欢在配置和类路径之间进行一对二的映射:
    <ivy:cachepath pathid="compile.path" conf="compile"/>
    <ivy:cachepath pathid="provide.path" conf="provided"/>

    后一种方法的问题是 javac 任务需要明确说明类路径用法,如下所示:
    <javac ...
    <classpath>
    <path refid="compile.path"/>
    <path refid="provided.path"/>
    </classpath>

    我认为这明确解释了您如何使用这个特殊提供的范围,但这完全取决于您。

    关于ivy - 如何在没有 IVY 中提供的运行时库的情况下复制运行时库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723865/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com