Я начал небольшое подтверждение концепции , чтобы сделать из нас инфраструктуру DI Toothpick DI с существующим Java-проектом на основе Gradle.Я прочитал довольно много утверждений о том, что вы можете использовать Toothpick с Java (имеется в виду JRE, OpenJDK, JDK или JSE - без Android) ... Однако каждый пример, который я смог проверить / проработать, имеет в какой-то моментзависимость от Android в некотором роде, форма или configuration
.
С наиболее успешными ( частично ) попытками до сих пор было использование экспериментального, одноразового пакета для насмешки Android, чтобы мой Java-проект по крайней мере компилировался без ошибок.Это сказало, что это появляется пустым при разрешении любых сгенерированных зависимостей, таких как:
- сгенерированный
MemberInjectorRegistry
- сгенерированный
FactoryRegistry
Сам пример проекта Toothpick и все более простые из доступных примеров используют конфигурацию Android и часто не зависят от других особенностей Android.
update Два
Я взял указание на Пример Toothpick проект, проект Java
Вики Tootpick и пример проекта используют опцию компиляции Java:
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
options.compilerArgs = ['-Atoothpick_registry_package_name=experiments.toothpick',]
}
Это дало мне предупреждение, которое оказалось несовпадением в Gradle и плагинах.И мне нужна была новая сборка с --refresh-dependencies
( подсказка : убедитесь, что вы скомпилировали пакеты TestsPackages).
После исправления того, что образец компилируется и проходит модульные тесты.Сгенерированные файлы находятся под build/generated
, и мне удалось побудить Netbeans найти их с помощью этого:
sourceSets {
generated {
java {
srcDirs = [ 'build/generated/source/apt/main' ];
}
}
}
К сожалению, Netbeans продолжает помещать маленькие красные линии под сгенерированными символами.По крайней мере, это работает.Поддержка NetBeans могла бы быть лучше.
Мой предыдущий эксперимент был основан на Toothpick Smoothie
, который является примером Android.Вроде как интеллектуальное упражнение ...
Этот файл build.gradle
основан на Android.Поэтому я попробовал фиктивные заменители отсутствующих компонентов.Проект компилируется, но не может найти ( любой ) сгенерированный код.
Я бы уже подумал, что может быть хотя бы ОДИН успешный пример проекта Java JRE / JDK Toothpick ' там '.
update One
Я решил заняться этим с другого конца и взглянуть на распространенные примеры обработки аннотаций Java.Это работает, насколько я понял, с Gradle v 4.7 (а также, я думаю, v4.6).
В вашем (суб) проекте build.gradle
...
plugins {
id "net.ltgt.apt" version "0.15"
}
:
dependencies {
annotationProcessor (
dep_toothpickCompiler
)
:
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * dep_toothpickCompiler
* * * * * * * * * * * * * * * *1079* * * * * * * * *
* * * *1088* 1083удалось создать папку
К сожалению, пока нет сгенерированного вывода.Я уверен, в конце туннеля есть свет.Я буду публиковать обновления здесь, если / когда я подойду к решению .
учебным примерам (GitHub)
I 'Мы определили несколько «надежных» примеров зубочисток.Пока что они хотят, чтобы Android был в каком-то месте.Либо в качестве целевых модулей Android, либо с использованием связанных зависимостей.
Учитывая (или предполагая), что чистый проект Java / Toothpick можно создавать, отлаживать и запускать на рабочем столе или из командной строки;это не кажется популярным, поскольку мой поиск в Google пошел ...
-