当前位置: 首页 > 知识库问答 >
问题:

如何获取和使用项目的版本

上官霄
2023-03-14

当存在依赖关系时,在ivy.xml中定义,例如:

<dependency org="com.company" name="mypackage" rev="6.0.0"/>

在构建中.xml,我让常春藤检索它。然后,它会下载一个名称中包含版本 ID 的文件。例如,库/我的包-6.0.0.zip

我如何知道版本(6.0.0)或我的ANT构建中的全名,而不用手动/去重复ivy.xml中的版本?

我希望能够做这样的事情:

<unzip src="lib/mypackage-${version}.zip" ...

共有1个答案

仲浩旷
2023-03-14

一种方法是使用 artifactpropery 任务,根据类似于检索任务工作方式的模式,使用依赖项版本设置属性。

<ivy:artifactproperty name="[artifact].ver" value="[revision]"/>

<echo message="Version: ${slf4j-api.ver}"/>

我的替代首选项是使用配置,只需在构建工作区中创建一个文件名没有修订版的文件,如下所示:

<ivy:retrieve pattern="target/zips/[artifact].[ext]" conf="zips"/>

这需要一个 ivy 文件,该文件具有特殊的“zips”配置设置和依赖项声明上的配置映射:

<dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="zips->default"/>

在本例中,在“lib”目录下设置了3个不同的类路径,并且用一个jar文件填充了一个zips目录,其文件名中没有修订:

├── build.xml
├── ivy.xml
├── lib
│   ├── compile
│   │   └── slf4j-api-1.7.5.jar
│   ├── runtime
│   │   ├── log4j-1.2.17.jar
│   │   ├── slf4j-api-1.7.5.jar
│   │   └── slf4j-log4j12-1.7.5.jar
│   └── test
│       ├── hamcrest-core-1.3.jar
│       ├── junit-4.11.jar
│       ├── log4j-1.2.17.jar
│       ├── slf4j-api-1.7.5.jar
│       └── slf4j-log4j12-1.7.5.jar
└── target
    └── zips
        └── slf4j-api.jar
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="resolve">
        <ivy:resolve/>
    </target>

    <target name="build" depends="resolve">
        <!-- Populate the "lib" directory -->
        <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision](-[classifier]).[ext]" conf="compile,runtime,test"/>

        <!-- Populate the "target/zips" directory -->
        <ivy:retrieve pattern="target/zips/[artifact].[ext]" conf="zips"/>
    </target>

</project>
<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="compile" description="Required to compile application"/>
        <conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
        <conf name="test"    description="Required for test only" extends="runtime"/>
        <conf name="zips"    description="Additional configuration for demo"/>
    </configurations>

    <dependencies>
        <!-- zips + compile dependencies -->
        <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="zips,compile->default"/>

        <!-- runtime dependencies -->
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="runtime->default"/>

        <!-- test dependencies -->
        <dependency org="junit" name="junit" rev="4.11" conf="test->default"/>
    </dependencies>

</ivy-module>

注意:

  • slf4japi包含在“zips”和“compile”配置中
 类似资料:
  • 问题内容: 我希望能够将iOS项目/应用程序的当前版本作为对象,而不必在文件中的某个位置定义常量。我不想在2个地方更改版本值。 当我在“项目”目标摘要中更改版本时,需要更新该值。 问题答案: 您可以获取版本和内部版本号,如下所示: 或在Objective-C中 我在以下类别中具有以下方法: 要点: https : //gist.github.com/ashleymills/6ec9fce6d7ec

  • 问题内容: 在处理POM之后,Jenkins构建有什么方法可以知道项目的Maven版本号吗? 我有一些项目由Maven控制版本控制,在构建后的工作中,我们想创建一个Debian软件包并调用一些shell脚本。我需要的是Maven以前可以用作Jenkins环境变量的版本号,因此我可以将其传递给构建后操作。 需要明确的是,我 没有 需要知道如何让詹金斯版本号传递到Maven的; 相反,我希望Maven

  • 问题内容: 在Stack Overflow上有关于操作系统版本的问题,但没有关于Windows名称的问题,我希望使用Node.js找出Windows名称。 我研究了,,和using 等许多模块,发现它们对获取操作系统说明,进程环境等很有帮助。我也可以将其用于Linux或Windows,即我正在使用的平台。 但是,如何检查使用Node.js在系统上安装的是Windows 7还是Windows 7?

  • 问题内容: 我正在使用由maven2管理的Java Web应用程序。我们有时会进行一些更改,并希望发布新版本,当然还有新版本号。在首页(jsp)中,有类似 是否有可能,每次执行新发行版时,仅更改pom.xml中的内容,而该maven $ {project.version}会自动填充jsp中的版本号吗? 我尝试了Maven配置文件,但是它似乎不起作用。 有任何想法吗? 谢谢。 问题答案: 也许这很愚

  • 在订单类中,我们有UUID和其他字段: 解析器可以是这样的: 我知道它不起作用,那么如何实现下一个项目呢?UUID 是否基于时间并且可以用作索引?

  • 问题内容: 我有一个Cordova项目,并且正在为其构建一个android插件。然后,我的插件使用了使用菱形运算(<>)的库。我尝试运行它,但收到此错误: 当我跑步时: 我在发布之前先进行研究,有些人通过将ant更改为 但这对我没有用。 我还尝试制作一个文件来设置和,但是它似乎只是在解析主项目,而不是我在插件上使用的子项目。 问题答案: 好的,对我有用的是添加插件使用的所有子项目(库)作为yout