Несколько реализаций для одного класса

215
16 ноября 2017, 02:35

Для android существует такая вещь как ProductFlavors. Хочется получиться тоже самое и для простой java и в итоге получить jar'ник.

Project
 src
--emul
   package
    ClassA
--main
   package
    ClassA
    ClassB
    ClassC
--mock
   package
    ClassA

Но каждый раз когда я компилирую получаю ClassA из папки main. Так же попробовал использовать плагин com.lazan.javaflavours, ситуацию такая же. Подскажите в чем может быть проблема и в какую сторону копать? Если в jar прописать from sourceSets.mock.output или from sourceSets.emul.output то всё получается как надо, но как только я прописываю в конкретный Task то на выходе получаю последнии исходники(какой бы jar не компилировал всегда получаю mock'овский). Код build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        // todo add dependencies
    }
}
plugins {
    id 'java'
    id "com.lazan.javaflavours" version "1.2"
}
group 'CashDesk'
version '1.0.0'
sourceCompatibility = 1.8
javaFlavours {
    flavour 'emul'
    flavour 'mock'
}
sourceSets {
    emul {
        java {
            srcDirs 'src/emul/java'
        }
    }
    mock {
        java {
            srcDirs 'src/mock/java'
        }
    }
}
jar {
    manifest {
        attributes 'Implementation-Title': 'Cash desk API',
                'Implementation-Version': version,
                'Built-Date': new Date(),
                'Built-JDK': System.getProperty('java.version'),
                'Built-Gradle': gradle.gradleVersion
    }
    exclude('by/avest/softwarecashdesk/example/**')
}
compileJava {
    options.encoding = "UTF-8"
}
task createJarEmulator(type: Jar) {
    baseName = 'cashdesk'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
task createJarMocks(type: Jar) {
    baseName = 'cashdesk'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
READ ALSO
LibGDX (де)активация кнопки

LibGDX (де)активация кнопки

Изучал раньше Android там можно было сделать кнопку неактивной (setEnabled) , так вот как в libGDX такое реализовывается ? Уже есть что то готовое или самому...

232
Не подгружаются данные с Firebase

Не подгружаются данные с Firebase

При попытке вывести данные из Firebase выдается ошибкаВ чем может быть проблема? P

280
Как лучше читается проверка на не пустую коллекцию?

Как лучше читается проверка на не пустую коллекцию?

Интересно, как грамотнее писать проверку на то, что коллекция не пустая, следуя принципу чистого кода?

250