Я строю небольшой проект Kotlin в IntelliJ, Idea, и пытаюсь выяснить, как создать несколько файлов tar / zip с настройками для каждой ОС, которую я хочу поддерживать.
Похоже на плагин распространения(который включается при использовании плагина приложения) - правильное направление, но я не могу понять, как заставить его делать то, что я хочу.
Я прочитал документацию по плагину,который можно найти здесь , но мне не совсем понятно, как выполнить то, что я хочу сделать.
Вот пример build.gradle, который показывает хотя бы идею того, что я хочухочу сделать, то есть иметь базовую настройку приложения, а затем иметь небольшую адаптацию для каждой из 3 ОС.
Например, для каждой из 3 ОС требуется уникальная версия библиотеки SWT.Для версии macos требуется определенный параметр JVM, а для версии linux мне нужно настроить скрипт запуска, чтобы добавить некоторые переменные среды.
Возможно ли это с плагином распространения?Если нет, то может ли кто-то предложить другое решение?
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.2.61'
}
apply plugin: 'application'
mainClassName = "MainKt"
version '1.0-SNAPSHOT'
repositories {
// my common required repos
}
dependencies {
// my common dependencies
}
distributions {
macos {
contents { from 'src' }
applicationDefaultJvmArgs.push("-XstartOnFirstThread")
dependencies {
implementation "org.eclipse.swt:org.eclipse.swt.cocoa.macosx.x86_64:4.5.2"
}
}
linux {
contents { from 'src' }
dependencies {
implementation "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:4.5.2"
}
startScripts.doLast {
def lines = unixScript.text.readLines()
println lines.add(1, '# add some stuff')
println lines.add(2, '# add some more stuff')
unixScript.text = lines.join("\n")
}
}
windows {
contents { from 'src' }
dependencies {
implementation "org.eclipse.swt:org.eclipse.swt.win32.win32.x86_64:4.5.2"
}
}
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Обновление
Это то, чем я сейчас занимаюсь, но я бы хотел улучшить это.
У меня естьпеременная
def deploy = false
if (!deploy) {
applicationDefaultJvmArgs.push("-XstartOnFirstThread")
dependencies {
implementation "org.eclipse.swt:org.eclipse.swt.cocoa.macosx.x86_64:4.5.2"
}
} else {
dependencies {
implementation "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:4.5.2"
}
startScripts.doLast {
def lines = unixScript.text.readLines()
println lines.add(1, 'export foo=foo')
println lines.add(2, 'export bar=bar')
}
}
Сейчас я занимаюсь разработкой на своем Mac и установил для deploy значение false.Когда я хочу сгенерировать дистрибутив для linux, я устанавливаю для deploy значение true.Я мог бы добавить больше кода и сделать то же самое для окон, но я хотел бы просто сгенерировать весь код в одной задаче и поместить его в разные файлы tar / zip.