maven - 将工件部署到没有文件扩展名的 Maven 存储库
问题描述
我想使用 Gradle 将二进制工件(Linux 和 Mac OS X 可执行文件)部署到 Maven 存储库MavenPublication
,以便它们存储在没有文件扩展名的存储库中(默认情况下 Linux 和 Mac 上的二进制文件/可执行文件就是这种情况)。
假设我有一个二进制foo
版本1.0.0
;在 Maven 术语中,它们分别是artifactId
和version
。我能得到的最接近的方法是以名称部署它foo-1.0.0.
- 请注意尾随点 ( .
)。我宁愿希望它以名称存储foo-1.0.0
(即,不带点)。我尝试不指定extension
属性,也尝试指定一个空的extension=''
.
publishing {
publications {
maven(MavenPublication) {
artifact("some/parent/dir/foo") {
extension ''
}
}
}
}
有可能实现这一目标吗?作为一个相关问题,packaging
应该在 POM 中为此类二进制文件指定什么。我已经检查了Maven 的工件处理程序类型列表,但这个列表没有提到二进制文件的打包,也没有提到没有扩展名的打包。我考虑过将其设置为binary
,但我不确定这可能产生的后果。
解决方案
Maven 存储库是错误的地方。
Maven 存储库按Maven 坐标( groupId
, artifactId
, version
) 工作,而不是按文件名工作。文件名只是具有给定坐标集的工件的内部表示。
推荐阅读
- docker - 如何在 Docker for Windows 上安装 YugaByte
- xamarin - Xamarin:我们可以在一个库项目中有多个不同的资源文件吗
- javascript - 我可以使用 if 语句来更改 Swiper javascript 滑块的 API 选项吗?
- linux - 如何运行从当前 rpm 规范文件安装 rpm 的 bash 脚本?
- javascript - 无法将 Object.assign 添加到 Google 表格
- opengl - How to offset 3D transformation matrix?
- python-3.x - 尝试将列表附加到另一个列表时,所有元素都会发生变化,即使我使用“listB.append(listA[:]”进行附加来创建副本
- reactjs - 无法从动作创建者调用动作函数
- for-loop - 用矢量化或其他方法重新构造 for 循环 - 八度
- javascript - 使用 Firebase-Admin SDK 帐户时如何修复凭据和令牌错误