【问题标题】:Get a project source dir in a Gradle plugin在 Gradle 插件中获取项目源目录
【发布时间】:2015-04-17 16:46:50
【问题描述】:

如果我在某个地方的文档中遗漏了这一点,首先很抱歉。

我正在尝试用 Java 编写 Gradle 插件。

更具体地说,我需要这样做:

public class MyPlugin implements Plugin<Project>{

    @Override
    public void apply(Project project) {
        project.getSourceDir();
    }
}

换句话说,如果可能的话,我怎样才能获得我的插件所运行的项目的源代码所在的目录?

我的假设是否正确,即当调用 apply 方法时,Gradle 已经知道源在哪里并且这个位置不能进一步改变?

谢谢。

【问题讨论】:

  • 我认为没有。我一直有同样的问题。 println 是你的朋友 ;) 我终于通过从 gradle 源中复制 GroovyPlugin 来完成这项工作。我正在处理的示例在这里...github.com/deanhiller/webpieces/tree/master/webserver/…
  • 哦,请注意,如果您将 printlin 放入该代码中,您会注意到它是在配置时而不是在执行时调用的,并且配置和执行之间可能会发生变化。

标签: java plugins gradle


【解决方案1】:

是的,因为插件根据您的参数应用于项目。如果你将它“应用”到两个项目,那么它会创建插件的两个实例并将你的项目对象传递给 apply 方法。

【讨论】:

  • 只有在我理解正确的情况下,您才回答了我的第二个问题。您还知道如何获取源目录吗?
  • 我假设当你说源目录时,你想要源集?如果是,你的插件应该定义它。如果您查看 java 插件的代码库,那就是它正在做的事情。如果您查看 GroovyPlugin,您还可以从现有插件基础/派生它。这是设置约定的插件,java插件将其设置为 src/main/java
    public void apply(Project project) { project.getPluginManager().apply(GroovyBasePlugin.class); project.getPluginManager().apply(JavaPlugin.class);配置Groovydoc(项目); }
【解决方案2】:

浏览 Gradle 用户指南。

一个项目有一个“sourceSet”对象列表,您可以通过“project.sourceSets”获得。每个 sourceSet 都有一组属性。

最好浏览The DSL reference 以查看可用的属性。寻找“SourceSet”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 2017-12-01
    • 2021-11-15
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多