gradle - Gradle Maven Publish插件:如何在没有artifactId的情况下上传具有任意名称的文件?
问题描述
我有一个项目,我必须将 YAML 文件上传到工件中。我希望它们位于工件中的特定路径,但我想自己确定全名,而名称中不存在 artifactId。
我有的
plugins {
`maven-publish`
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
repositories {
mavenLocal()
}
// Example task for generating YAML files.
tasks.register("generateSomething") {
doLast {
buildDir.resolve("generated").mkdir()
buildDir.resolve("generated/my-st-$version.yml").writeText("I am file for ST")
buildDir.resolve("generated/my-prd-$version.yml").writeText("I am file for PRD")
}
}
project.tasks.withType(AbstractPublishToMaven::class.java) {
dependsOn("generateSomething")
}
publishing {
publications {
create<MavenPublication>("my-own-artifacts") {
artifact(buildDir.resolve("generated/my-st-$version.yml")) {
classifier = "st"
extension = "$version.txt"
}
artifact(buildDir.resolve("generated/my-prd-$version.yml")) {
classifier = "prd"
extension = "$version.txt"
}
}
}
}
当我运行时gradle publishToMavenLocal
(artifactId 是 test-example),我在repository\com\example\test-example\0.0.1-SNAPSHOT\
.
test-example-0.0.1-SNAPSHOT-prd.0.0.1-SNAPSHOT.yml
test-example-0.0.1-SNAPSHOT-st.0.0.1-SNAPSHOT.yml
但我想要的是:
prd.0.0.1-SNAPSHOT.yml
st.0.0.1-SNAPSHOT.yml
我试过的
我尝试将 artifactId 更改为my-st
,但这会导致路径更改为com\example\my-set\...
,这不是我想要的。我也尝试过使用分类器和扩展名,但它总是在名称前面加上我不想要的东西。
我在 MavenPublish 类中看不到任何其他可用的方法。
我检查了代码AbstractMavenPublisher.java
,可能根本不可能:
/**
* Publishes a single module artifact, based on classifier and extension.
*/
void publish(String classifier, String extension, File content) {
StringBuilder path = new StringBuilder(128);
path.append(groupPath).append('/');
path.append(artifactId).append('/');
path.append(moduleVersion).append('/');
path.append(artifactId).append('-').append(artifactVersion);
if (classifier != null) {
path.append('-').append(classifier);
}
if (extension.length() > 0) {
path.append('.').append(extension);
}
ExternalResourceName externalResource = new ExternalResourceName(rootUri, path.toString());
publish(externalResource, content);
}
但我不确定这是否是实际调用的代码。也许还有其他发布方式?
解决方案
推荐阅读
- javascript - 为什么 Chrome 浏览器在控制台中向 navigator.appCodeName 提供“mozilla”?
- r - 使用 purrr 从嵌套的 tibble 中编写具有多个 sheetNames 的 excel 表
- python - 使用 NETCDF4 中的 MODIS 数据从 python 中的数据框中选择特定日期
- javascript - 锚链接在粘性标题后面的页面顶部。如何设置平滑滚动 JS 在滚动时始终保持 75px 的上边距?
- java - 如何从android kotlin中的recyclerview适配器获取arraylist
- html - 如何在不循环使用关键帧动画的情况下更改内容
- html - 访问时,我的网站无法在 iPhone12 pro 的谷歌应用程序中正确加载抛出一个链接
- c++ - 具有多种数据类型的数组
- react-native - React Native TypeError:未定义不是对象(评估'options.routeGetIdList [action.payload.name]')
- java - 如何遍历多个文件夹并使用Java比较存储在其中的pdf