Java-программа для получения номера версии в файле сборки Gradle

Вы найдете пошаговые системы сбора данных, которые не могут не иметь нулей в базе данных, потому что порядок заданий / сбор данных очень редко совпадает с логической моделью данных.

Или вы можете по умолчанию использовать значения (требуя, чтобы код обрабатывал эти значения по умолчанию). Вы можете предположить, что все строки пустые, а не нулевые, например, в вашей модели.

Или вы можете иметь промежуточную таблицу базы данных для сбора данных, которая продолжается до тех пор, пока все данные не будут получены, прежде чем вы заполняете фактические таблицы базы данных , Это большая работа.

0
задан Jorge Campos 18 January 2019 в 17:06
поделиться

2 ответа

Я бы все же рекомендовал разобрать файл по строке и выбрать второе слово строки, где первое слово - version.

Однако, эта реализация ниже будет служить вашей цели в виде регулярных выражений. Регулярное выражение (version ) ([A-Z0-9.'/-]+) состоит из двух групп: первая будет содержать слово version, а вторая - номер версии. Итак, просто получите номер версии.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {

        String gradleFileContent = "group 'com.shan.sample.gradle'\n" +
                "version '1.0-SNAPSHOT'\n" +
                "\n" +
                "apply plugin: 'java'\n" +
                "apply plugin: 'application'\n" +
                "apply plugin: 'maven'\n" +
                "\n" +
                "sourceCompatibility = 1.8\n" +
                "\n" +
                "\n" +
                "mainClassName = 'com.shan.sample.gradle.SampleProgram'\n" +
                "\n" +
                "dependencies {\n" +
                "    testCompile group: 'junit', name: 'junit', version: '4.12'\n" +
                "}\n";

        Pattern p = Pattern.compile("(version )([A-Z0-9.'/-]+)");
        Matcher m = p.matcher(gradleFileContent);

        if (m.find()) {
            System.out.println(m.group(2));
        }
    }
}
0
ответ дан shakhawat 18 January 2019 в 17:06
поделиться

Я пока не могу оставлять комментарии так:

Имейте в виду, что ответ шахавата может привести к небольшим несоответствиям, он будет соответствовать любой версии '123abc' в файле, поэтому, если это произойдет, у вас есть

[110 ]

это займет первое (если вы берете только первое найденное совпадение). Чтобы противостоять этому в некоторой части, вы можете добавить ^ \ s * в начале регулярного выражения следующим образом:

^\s*(version)\s*([A-Z0-9.'/-]+)

^ соответствует началу строки

\ s соответствует любому символу пробела [118 ]

* - жадное сопоставление, поэтому в этом случае оно будет продолжать сопоставлять все пробельные символы

, поэтому вы можете иметь столько пробелов между версией и номером версии, а также между началом строки и строкой версии в случае некоторых потерянные пробелы или аналогичные имена, поставленные ранее.

Также, используя gradle API ( https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html ), вы можете создать простой gradle плагин gradle, который может сообщать о версии через

project.version

, которые вы можете подать заявку на каждый проект, а затем запустить его извне.

0
ответ дан ejaksla 18 January 2019 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: