Gradle - 不要在包含的依赖项名称中指定版本

luc*_*cky 5 gradle

我的应用程序被打包为ear,并且我使用了earlib 和部署配置。然而,对于所有这些依赖项,版本都会在 jar 名称中提及。例如,如果我提到如下依赖项,

earlib 'com.xyz:abc:1.0.1'
Run Code Online (Sandbox Code Playgroud)

在生成的ear中,我可以看到jar名称为abc-1.0.1.jar,但我想将其简单地包含为abc.jar。

Unl*_*uto 5

声明没有版本的依赖项

Gradle 允许您声明没有版本的依赖项,但您必须定义依赖项约束,这基本上是依赖项版本的定义。这在大型项目中常用:

dependencies {
    implementation 'org.springframework:spring-web'
}

dependencies {
    constraints {
        implementation 'org.springframework:spring-web:5.0.2.RELEASE'
    }
}
Run Code Online (Sandbox Code Playgroud)

声明动态版本

另一种选择是使用加号运算符声明动态版本。这允许您在打包应用程序时使用依赖项的最新版本。这样做有潜在的危险,因为它有破坏应用程序的风险:

apply plugin: 'java-library'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework:spring-web:5.+'
}
Run Code Online (Sandbox Code Playgroud)

声明文件依赖关系

如果您根本不想依赖二进制存储库,而是自己提供依赖项,则可以从目录和中声明文件依赖项。这允许您根据需要命名和版本依赖项,但您必须自己维护它们:antlibstools

configurations {
    antContrib
    externalLibs
    deploymentTools
}

dependencies {
    antContrib files('ant/antcontrib.jar')
    externalLibs files('libs/commons-lang.jar', 'libs/log4j.jar')
    deploymentTools fileTree(dir: 'tools', include: '*.exe')
}
Run Code Online (Sandbox Code Playgroud)