将项目的依赖添加到我的自定义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 条评论
登录 后参与评论

相关文章

将Cocoapods依赖项添加到我的自定义框架中

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

无法将Gradle依赖项添加到我的代号一个项目中

将自定义 *.jar 文件添加到 build.gradle 项目依赖项中并设置类路径

将自定义Maven依赖项添加到Gradle项目

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

将缩略图添加到我的自定义适配器

使用foreach发布循环将分页添加到我的自定义博客页面

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

将sourceJar任务添加到自定义Gradle插件

创建自定义类并从Storyboad添加到我的ViewController中?

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

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

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

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

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

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

无法使用 jsforce 将项目添加到 Salesforce 中的自定义选项列表

存储库是否添加到我的项目的 POM 中用于定位依赖项的依赖项?

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

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

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

将lombok依赖项添加到我的项目中时,TypeNotPresentExceptionProxy

为什么当我使用jQuery自定义插件将src添加到图像时,该段落被下移?

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

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

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

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

如何从Android Studio中的自定义插件的操作中动态添加项目中的依赖项?