将项目的依赖添加到我的自定义gradle插件中

文森佐宫

我是 Gradle 世界的新手,我正在编写一个个人插件来执行对数据库的操作,例如:创建数据库、删除数据库、创建表 e 将值插入数据库,但我有一个问题使用我的插件的项目的导入依赖,一个使用 JDBC 创建数据库的例子我必须需要数据库的驱动程序 JDBC,这个驱动程序是项目 main 的内容。

我的问题是:如何将数据库的依赖 jar 放入我的 Gradle 插件中?

这是我的代码

package io.vincentpalazzo.gradledatabase.task;

import io.vincentpalazzo.gradledatabase.exstension.GradleDatabaseExstension;
import io.vincentpalazzo.gradledatabase.persistence.DataSurce;
import org.gradle.api.DefaultTask;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.tasks.TaskAction;

import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Iterator;
import java.io.File;
import java.util.Set;

/**
 * @author https://github.com/vincenzopalazzo
 */
public class CreateDatabaseTask extends DefaultTask {

    @TaskAction
    public void createAction() {

        GradleDatabaseExstension project = getProject().getExtensions().findByType(GradleDatabaseExstension.class);

        String url = project.getUrl();
        String driverClass = project.getDriver(); //The drive name database is different
        String username = project.getUsername();
        String password = project.getPassword();
        String nameDatabase = project.getNameDatabase();
        String nameJar = project.getNameJar();

        if (findDependecyFileJarForDriver(nameJar)) {
            System.out.println("Jar findend");
        } else {
            System.out.println("Jar not found");
        }

        DataSurce dataSource = new DataSurce();
        if (dataSource.connectionDatabase(driverClass, url, username, password)) {
            if (dataSource.createDatabese(nameDatabase)) {
                System.out.println("Database " + nameDatabase + " created");
            }
        }
    }

    private boolean findDependecyFileJarForDriver(String nameJar) {
        if (nameJar == null || nameJar.isEmpty()) {
            throw new IllegalArgumentException("The input parameter is null");
        }

        Iterator<Configuration> iterable = getProject().getConfigurations().iterator();
        boolean finded = false;

        while ((!finded) || (iterable.hasNext())) {
            Configuration configuration = iterable.next();
            Set<File> filesSet = configuration.resolve();
            for (File file : filesSet) {
                String nameFile = file.getName();
                if (nameFile.contains(nameJar)) {
                    //Now?;
                    finded = true;
                }
            }
        }
        return finded;
    }
}

这是我的项目,这是在 Gradle 论坛上的帖子的公投

对不起我糟糕的英语,但我正在学习

文森佐宫

我想在这篇文章中添加答案。

我发现更好的解决方案是使用这个插件

我在我的代码中使用了插件,这是一个例子

public abstract class AbstractTaskGradleDatabase extends DefaultTask {

    protected JarHelper jarHelper;
    protected Optional<File> jar;

    protected void init(){

        jarHelper = new JarHelper(getProject());
        jar = jarHelper.fetch("nameDependence");
    }
}

在 build.gradle 里面

dependencies {
    implementation gradleApi()

    implementation 'com.lingocoder:jarexec.plugin:0.3'

}

ps:由于插件版本是测试版,答案可以及时更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将自定义Gradle插件添加到项目

来自分类Dev

将 GraphStream 图添加到我的自定义 jPanel 中

来自分类Dev

如何在自定义插件中将buildscript依赖项添加到项目依赖项?

来自分类Dev

无法将通过字符串生成的证书添加到我的自定义TrustManager中

来自分类Dev

是否可以将 sitefinity 小部件添加到我的自定义小部件中?

来自分类Dev

Ms excel - 如何将 1 天添加到我的自定义日期?

来自分类Dev

自定义Maven插件:以编程方式将源目录添加到项目

来自分类Dev

如何将自定义Google搜索添加到我的自定义搜索框中?

来自分类Dev

如何将自定义Google搜索添加到我的自定义搜索框中?

来自分类Dev

将项目添加到自定义组件的布局

来自分类Dev

使用WordPress将自定义CSS添加到我的Polylang小部件并删除项目符号

来自分类Dev

为什么我应该将aar文件中的依赖项添加到我的项目中?

来自分类Dev

使用SonataAdminBundle将多选内容作为自定义表单字段添加到我的表单

来自分类Dev

无法将项目添加到extjs中的自定义组件

来自分类Dev

将新项目添加到自定义类的 Observable 集合中

来自分类Dev

如何以编程方式将项目添加到 Sitecore 中的自定义索引?

来自分类Dev

如何将弹出菜单添加到自定义listview到每个项目的android

来自分类Dev

如何在“查询”构建器中将自定义列添加到我的选择中?

来自分类Dev

将javascript库添加到我的项目的标准方法是什么?

来自分类Dev

如何将com.typesafe.sbt。*依赖项添加到我的项目中?

来自分类Dev

将Maven依赖项添加到我的Maven项目时找不到资源

来自分类Dev

如何将库添加到LIBGDX项目的依赖项gradle

来自分类Dev

我可以将Click Listener添加到自定义Toast中吗

来自分类Dev

将自定义HTML代码段添加到我的网站

来自分类Dev

gradle ear 插件 - 自定义 jar 添加到 EAR 根文件夹

来自分类Dev

将选择的插件添加到我的网站

来自分类Dev

将Ant Library Project添加到我的Gradle项目中

来自分类Dev

将Ant Library Project添加到我的Gradle项目中

来自分类Dev

如何使用 html-inline 将在我的 css 中添加的自定义字体添加到我的reveal.js 演示文稿中?

Related 相关文章

  1. 1

    将自定义Gradle插件添加到项目

  2. 2

    将 GraphStream 图添加到我的自定义 jPanel 中

  3. 3

    如何在自定义插件中将buildscript依赖项添加到项目依赖项?

  4. 4

    无法将通过字符串生成的证书添加到我的自定义TrustManager中

  5. 5

    是否可以将 sitefinity 小部件添加到我的自定义小部件中?

  6. 6

    Ms excel - 如何将 1 天添加到我的自定义日期?

  7. 7

    自定义Maven插件:以编程方式将源目录添加到项目

  8. 8

    如何将自定义Google搜索添加到我的自定义搜索框中?

  9. 9

    如何将自定义Google搜索添加到我的自定义搜索框中?

  10. 10

    将项目添加到自定义组件的布局

  11. 11

    使用WordPress将自定义CSS添加到我的Polylang小部件并删除项目符号

  12. 12

    为什么我应该将aar文件中的依赖项添加到我的项目中?

  13. 13

    使用SonataAdminBundle将多选内容作为自定义表单字段添加到我的表单

  14. 14

    无法将项目添加到extjs中的自定义组件

  15. 15

    将新项目添加到自定义类的 Observable 集合中

  16. 16

    如何以编程方式将项目添加到 Sitecore 中的自定义索引?

  17. 17

    如何将弹出菜单添加到自定义listview到每个项目的android

  18. 18

    如何在“查询”构建器中将自定义列添加到我的选择中?

  19. 19

    将javascript库添加到我的项目的标准方法是什么?

  20. 20

    如何将com.typesafe.sbt。*依赖项添加到我的项目中?

  21. 21

    将Maven依赖项添加到我的Maven项目时找不到资源

  22. 22

    如何将库添加到LIBGDX项目的依赖项gradle

  23. 23

    我可以将Click Listener添加到自定义Toast中吗

  24. 24

    将自定义HTML代码段添加到我的网站

  25. 25

    gradle ear 插件 - 自定义 jar 添加到 EAR 根文件夹

  26. 26

    将选择的插件添加到我的网站

  27. 27

    将Ant Library Project添加到我的Gradle项目中

  28. 28

    将Ant Library Project添加到我的Gradle项目中

  29. 29

    如何使用 html-inline 将在我的 css 中添加的自定义字体添加到我的reveal.js 演示文稿中?

热门标签

归档