我试图了解 Gradle 依赖配置,在深入研究一些文档(例如,https://docs.gradle.org/current/userguide/java_library_plugin.html)后,我留下了一堆相关的问题*:
在 Gradle 中,jar、工件、依赖项和模块之间有什么区别?有哪些非 jar 的工件、依赖项和模块的示例?不是模块的工件?ETC...
什么是可解析配置?我发现如果配置 x.canBeResolved 那么我可以调用 x.resolve 来获取一组 jar 路径,而 x.resolve 方法不会抛出错误(这就是将配置标记为消耗品的全部内容吗?)。但不是所有的配置集都是模块,所以我不应该能够看到它们是什么吗?如果是这样,怎么办?
什么是消耗品配置?将配置标记为“消耗品”允许您做什么/阻止您做什么?有哪些消耗品配置的好例子?如何利用可消耗/不可消耗的配置?
配置的哪些其他属性很重要以及为什么(例如,属性是否用于除变体之外的任何内容)?
什么是变体,它们是如何创建和使用的,以及为什么要创建/使用它们?(参见https://gradle.github.io/webinar-dep-mgmt-part-1/#/more-definitions)。
java
和插件如何java-library
利用配置的这些功能?特别是,api
在幕后如何与配置进行不同的配置或处理implementation
?这与可解析/可消耗有什么关系吗?
此时我还应该问哪些其他问题?
特别感谢具体的示例和代码。
*我意识到其中许多问题都可以单独提出,如果您对某个问题有一个好的答案(或链接),请分享。然而,我试图了解全局,所以我将它们放在一个标题下。另外,我怀疑如果没有其他问题的答案,我将无法理解某些问题的答案——例如 jars、工件、依赖项、模块——并且我正在努力减少问答延迟和一般问题困惑。
我正在尝试通过运行来调试我的 ansible 设置
ansible -m debug -a 'var=ansible_distribution' all
Run Code Online (Sandbox Code Playgroud)
但我得到了
my_ansible_host0 | SUCCESS => {
"ansible_distribution": "VARIABLE IS NOT DEFINED!"
}
Run Code Online (Sandbox Code Playgroud)
不过,我似乎可以{{ansible_distribution}}
在我的 jinja 模板中使用。为什么是这样?(例如,这是否与我尚未弄清楚的事实和变量之间的区别有关?)我如何更改我的命令以使其打印出 的值ansible_distribution
?(我需要做点什么吗lookup(...)
?)
我已经能够生成带有适当组部分的 spring-configuration-metadata.json 文件,但我的属性列表为空:
{
"groups": [
{
"name": "test-configs",
"type": "com.example.configpropsdemo.TestConfigs",
"sourceType": "com.example.configpropsdemo.TestConfigs"
}
],
"properties": [],
"hints": []
}
Run Code Online (Sandbox Code Playgroud)
我的配置属性类如下所示:
@Validated
@Component
@ConfigurationProperties(prefix = "test-configs")
public class TestConfigs extends ArrayList<TestConfigs.TestConfig> {
@Validated
public static class TestConfig {
@NotBlank
private String configName;
@NotBlank
private String username;
@NotBlank
private String password;
//getters and setters...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 gradle,我的 build.gradle 如下所示:
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11' …
Run Code Online (Sandbox Code Playgroud)