我开始了一个小的概念证明练习,使我们使用现有的基于Gradle的Java项目来Toothpick DI framework。我已经阅读了很多声称你可以使用Toothpick with Java(意思是JRE,OpenJDK,JDK或JSE - 没有Android)...但是,我能够检查/工作的每个例子都有一些以某种方式指出对Android的依赖,形状或configuration
。
迄今为止,大多数(部分)成功的努力都是使用一个实验性的,丢弃的Android模拟包来让我的Java项目至少编译而不会出错。这说明它在解决任何应该生成的依赖项时出现空白,例如:
MemberInjectorRegistry
FactoryRegistry
Toothpick示例项目本身和更简单的可用示例都使用Android配置,并且通常不依赖于其他Android细节。
我指导了Toothpick sample项目,一个Java项目
Tootpick wiki和示例项目使用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项目示例' 在那里'。
我决定从另一端解决这个问题,并查看常见的Java注释处理示例。这项工作尽我所能,Gradle v 4.7 (我认为也是v4.6)。
在您的(子)项目中build.gradle
...
plugins {
id "net.ltgt.apt" version "0.15"
}
:
dependencies {
annotationProcessor (
dep_toothpickCompiler
)
:
}
dep_toothpickCompiler
早先定义为:
// Annotation Processor
dep_toothpickCompiler = "com.github.stephanenicolas.toothpick:toothpick-compiler:${ver_toothpick}"
结果 ...
此步骤至少设法创建
build/generated
文件夹不幸的是到目前为止没有生成输出。隧道尽头有光,我敢肯定。如果/我接近解决方案,我会在此处发布更新。
学习示例(GitHub)
我发现了一些可靠的'牙签的例子。到目前为止,他们希望Android在某些地方。无论是作为Android目标模块还是使用相关的依赖项。
给出(或假设)纯Java / Toothpick项目可以在桌面上或从命令行构建,调试和运行;就我的谷歌搜索来说,它似乎并不是一个受欢迎的选择...
-
答案 0 :(得分:1)
你应该看看TP样本,它是纯Java。
https://github.com/stephanenicolas/toothpick/tree/master/toothpick-sample
Smoothie实际上是TP的特定于Android的部分。