Gradle to Maven

пятница, 28 марта 2014 г.

Столкнулся с достаточно редким случаем, когда потребовалось переехать с gradle обратно на maven. Самой неприятной рутиной задачей был перевод описаний зависимостей из однострочного gradle-представления в xml-представление maven.
Представляю свое unix-way решение проблемы. Решение грубое, но может кому сгодится и сэкономит немного времени :)
~$ cat build.gradle | grep compile | sed "s/\(compile '\)\(.*\)\(:\)\(.*\)\(:\)\(.*\)\('\)/<dependency><groupId>\2<\/groupId><artifactId>\4<\/artifactId><version>\6<\/version><\/dependency>/g;"
Под катом небольшое пояснение.

Как это работает?

Берем build.gradle например такого содержания:
apply plugin: 'java'

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.6'
    compile 'org.slf4j:slf4j-log4j:1.7.6'

    compile 'org.hibernate:hibernate-core:4.3.4.Final'
    compile 'org.hibernate:hibernate-entitymanager:4.3.4.Final'

    compile 'org.jboss.resteasy:jaxrs-api:3.0.6.Final'
    compile 'com.google.code.gson:gson:2.2.4'
}
Выводим его содержимое:
~$ cat ~/build.gradle
Находим строки с compile:
~$ grep compile
Изменяем их через регулярное выражение:
~$ sed "s/\(compile '\)\(.*\)\(:\)\(.*\)\(:\)\(.*\)\('\)/<dependency><groupId>\2<\/groupId><artifactId>\4<\/artifactId><version>\6<\/version><\/dependency>/g;"
Объединяем все в цепочку вызовов через pipe:
~$ cat build.gradle | grep compile | sed "s/\(compile '\)\(.*\)\(:\)\(.*\)\(:\)\(.*\)\('\)/<dependency><groupId>\2<\/groupId><artifactId>\4<\/artifactId><version>\6<\/version><\/dependency>/g;"
Получаем результат:
    <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.6</version></dependency>
    <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j</artifactId><version>1.7.6</version></dependency>
    <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.4.Final</version></dependency>
    <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.3.4.Final</version></dependency>
    <dependency><groupId>org.jboss.resteasy</groupId><artifactId>jaxrs-api</artifactId><version>3.0.6.Final</version></dependency>
    <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.2.4</version></dependency>


0 коммент. :: Gradle to Maven

Отправить комментарий

Ваше мнение мне искренне интересно. Смелее!

Технологии Blogger.