- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可能在这里遗漏了一些重要的东西。但是,我正在努力将一个简单的库发布到 maven 存储库(它将被组织中其他基于 maven 的项目使用)
我在 Gradle 官方网站上找到了最好的指南:https://docs.gradle.org/current/userguide/publishing_maven.html
但是,还有很多问题没有解答:
除了手动包含 if-else 语句之外,是否没有其他方法可以区分 SNAPSHOT 和发布版本?
什么是来自components.java
? IDEA 没有提供大多数此类 DSL 的自动完成或文档(与 Maven 不同,Maven 的代码智能运行良好)
如何发布到需要身份验证的私有(private)存储库?我知道某处必须有一个使用的 block :
username = "${artifactory_user}"
password = "${artifactory_password}"
从 ~/.gradle/gradle.properties
读取值
但是我应该把这个方 block 放在哪里呢?
总的来说,我觉得我在这里遗漏了一些东西,也许是一些被广泛阅读的文档......使用 maven 本身这个过程相当简单,官方文档使这个过程相对轻松
使用 Gradle,我觉得最简单的发布到存储库需要大量定制逻辑,而我的直觉告诉我,如此常见的东西必须已经封装在具有合理默认值的插件中
最佳答案
我看到您已经找到了解决方案,但我的回答旨在为您的问题提供详细的答案。
Is there no way to differentiate between SNAPSHOT and release builds other than to manually include the if-else statement?
正确。 if-else
语句正是您区分快照和发布构建所需要的。 Gradle 本身不提供任何类型的版本控制功能。这留给你处理或插件,如 Nebula Release .
What is
from components.java
from
是来自 AbstractCopyTask
的方法调用哪个Jar
任务类型是的子类。components
又是另一个方法调用。您实际上是在调用 Project
的 getComponents()
.
components.java
是 components.getByName("java")
的糖。这是因为 Groovy 的动态/魔法而起作用.IDEA gives no autocomplete or documentation on most of these DSLs (unlike Maven, where the code intelligence works well)
这是由于 Groovy 的动态/弱类型。 build.gradle
文件是使用 Groovy 编写的。 IntelliJ 确实会尝试推断构建脚本的类型,但不能完全推断。幸运的是,您现在可以使用 Kotlin 编写构建脚本:
我强烈建议继续使用 Kotlin DSL。您将确切地知道所有内容的来源。
How do I publish to a private repository that requires authentication?
不幸的是,maven-publish
插件的文档只用一句话提到了它。即便如此,它只是将您引导至 API 文档,这些文档并不总是有用,但您能够弄明白。
https://docs.gradle.org/current/userguide/publishing_maven.html
You can also configure any authentication details that are required to connect to the repository. See MavenArtifactRepository for more details.
最后:
(...) the values being read from ~/.gradle/gradle.properties
Gradle 会不遗余力地解析一个属性。 gradle.properties
只是 Gradle 查找属性的众多位置之一。您可以在顶部的属性 部分下查看更多详细信息here .
我想通过使用 Kotlin DSL 提供您的答案的完整示例作为结束。同样使用 buildscript { }
是应用插件的传统方法,如前所述 here .您应该继续使用更新/首选的 plugins{}
block 。更多信息 here .
plugins {
`maven-publish`
id("org.jetbrains.kotlin.jvm") version "1.3.31"
}
group = "com.company"
version = "1.0.0-SNAPSHOT"
tasks.wrapper {
gradleVersion = "5.6.1"
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.main.get().allSource)
}
repositories {
mavenCentral()
}
publishing {
publications {
register<MavenPublication>("mavenJava") {
artifactId = "some-artifactId"
from(components["java"])
artifact(sourcesJar.get())
pom {
name.set("Project Name")
}
}
}
repositories {
maven {
url = uri("https://company.jfrog.io/company/maven-local")
credentials {
username = property("artifactory_user") as String
password = property("artifactory_password") as String
}
}
}
}
val test by tasks.getting(Test::class) {
useJUnitPlatform()
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
// ...
}
关于java - 发布一个简单的 Java 库到 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57837967/
我正在努力实现以下目标, 假设我有字符串: ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ) ) ) ) ) 我想编写一个正则
给定: 1 2 3 4 5 6
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
大家好,我卡颂。 Svelte问世很久了,一直想写一篇好懂的原理分析文章,拖了这么久终于写了。 本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一
身份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后一位为数字或者大写字母”X“。 与之匹配的正则表达式: ?
我们先来最简单的,网页的登录窗口; 不过开始之前,大家先下载jquery的插件 本人习惯用了vs2008来做网页了,先添加一个空白页 这是最简单的的做法。。。先在body里面插入 <
1、MySQL自带的压力测试工具 Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等
Go语言语法类似于C语言,因此熟悉C语言及其派生语言( C++、 C#、Objective-C 等)的人都会迅速熟悉这门语言。 C语言的有些语法会让代码可读性降低甚至发生歧义。Go语言在C语言的
我正在使用快速将 mkv 转换为 mp4 ffmpeg 命令 ffmpeg -i test.mkv -vcodec copy -acodec copy new.mp4 但不适用于任何 mkv 文件,当
我想计算我的工作簿中的工作表数量,然后从总数中减去特定的工作表。我错过了什么?这给了我一个对象错误: wsCount = ThisWorkbook.Sheets.Count - ThisWorkboo
我有一个 perl 文件,用于查看文件夹中是否存在 ini。如果是,它会从中读取,如果不是,它会根据我为它制作的模板创建一个。 我在 ini 部分使用 Config::Simple。 我的问题是,如果
尝试让一个 ViewController 通过标准 Cocoa 通知与另一个 ViewController 进行通信。 编写了一个简单的测试用例。在我最初的 VC 中,我将以下内容添加到 viewDi
我正在绘制高程剖面图,显示沿路径的高程增益/损失,类似于下面的: Sample Elevation Profile with hand-placed labels http://img38.image
嗨,所以我需要做的是最终让 regStart 和 regPage 根据点击事件交替可见性,我不太担心编写 JavaScript 函数,但我根本无法让我的 regPage 首先隐藏。这是我的代码。请简单
我有一个非常简单的程序来测量一个函数花费了多少时间。 #include #include #include struct Foo { void addSample(uint64_t s)
我需要为 JavaScript 制作简单的 C# BitConverter。我做了一个简单的BitConverter class BitConverter{ constructor(){} GetBy
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是 Simple.Data 的新手。但我很难找到如何进行“分组依据”。 我想要的是非常基本的。 表格看起来像: +________+ | cards | +________+ | id |
我现在正在开发一个 JS UDF,它看起来遵循编码。 通常情况下,由于循环计数为 2,Alert Msg 会出现两次。我想要的是即使循环计数为 3,Alert Msg 也只会出现一次。任何想法都
我是一名优秀的程序员,十分优秀!