使用 Toothpick DI 框架与 Java(仅)项目一起使用

Using the Toothpick DI framework be used with a Java (only) project

我开始了一个小型 概念验证 练习,使我们的 Toothpick DI framework 与现有的基于 Gradle 的 Java 项目相结合。我已经阅读了很多声明,您可以将 Toothpick 与 Java 一起使用(意思是 JRE、OpenJDK、JDK 或 JSE - 否 Android)...但是,我能够 check/work 通过的每个示例在某些时候都以某种方式、形状或 configuration 依赖于 Android。

到目前为止(部分)最成功的努力是使用一个实验性的、一次性的 Android 模拟包来拥有我的 Java项目至少编译没有错误。也就是说,它在解决任何应该生成的依赖项时出现空白,例如:

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 继续在生成的符号下方添加小红线。至少它 运行s。 Netbeans 支持可能会更好。

我之前的实验着眼于牙签 Smoothie,这是一个 Android 示例。作为智力练习有点有趣......

build.gradle 文件依赖于 Android。所以我尝试用模拟替代品来代替缺失的组件。该项目编译但找不到 (any) 生成的代码。

我现在会考虑至少有一个成功的 Java JRE/JDK 牙签项目示例“那里”。

更新一个

我决定从 另一端 解决这个问题,并查看常见的 Java 注释处理示例。据我所知,这是有效的,Gradle v4.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}"

结果 ...

这一步至少成功创建了一个

遗憾的是,到目前为止还没有生成输出。隧道尽头有光,我敢肯定。我会 post 在这里更新 if/as 我更接近 解决方案


学习实例 (GitHub)

我找到了一些 'reliable' 牙签示例。到目前为止,他们想要 Android 在某个地方。作为 Android 目标模块或使用相关依赖项。

假定(或假设)一个纯 Java / Toothpick 项目可以在桌面或命令行上构建、调试和 运行;就我的 google 而言,它似乎不是一个受欢迎的选择 ...

--

你应该看看TP样本,它是纯净的Java。

https://github.com/stephanenicolas/toothpick/tree/master/toothpick-sample

Smoothie 实际上是 TP 的 android 特定部分。