代码之家  ›  专栏  ›  技术社区  ›  will

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

  •  1
  • will  · 技术社区  · 6 年前

    我开始了一个小的 概念证明 使我们了解 Toothpick DI framework 使用现有的基于Goell的Java项目。我已经阅读了不少的声明,你可以使用Toothpick与Java(意思是JRE,OpenJDK,JDK或JSE -没有Android)…然而,我能够检查/处理的每个例子在某种程度上都依赖于android configuration .

    最多的( 部分 迄今为止,成功的尝试是使用一个实验性的、丢弃的Android模拟包,使我的Java项目至少编译无误。也就是说,在解析任何应生成的依赖项时都会出现空白,例如:

    • 生成 MemberInjectorRegistry
    • 生成 FactoryRegistry

    牙签示例项目本身和更简单的可用示例都使用android配置,并且通常不依赖于其他android细节。

    更新2

    我向 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 我设法鼓励上网者 找到 他们用这个:

     sourceSets {
         generated {
             java {
                 srcDirs = [ 'build/generated/source/apt/main' ];
             }
         }
     }
    

    遗憾的是,netbeans继续在生成的符号下面加上一点红线。至少它跑了。netbeans支持可能更好。

    我先前的实验是看牙签 Smoothie 这是一个android的例子。作为一种智力练习有点有趣…

    build.gradle 文件依赖于Android。所以我试着用模拟的方法替换掉丢失的部件。该项目正在编译,但找不到( 任何 )生成的代码。

    我现在已经考虑到至少有一个成功的JavaJR/JDK牙签项目例子。 在那里 '.

    更新一个

    我决定从 另一端 并查看常见的Java注释处理实例。就我所知这是可行的,Gradle V 四点七 (我也认为是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}"
    

    结果

    此步骤至少创建了

    • 生成 文件夹

    不幸的是,到目前为止还没有生成输出。我敢肯定,隧道尽头有灯光。如果/当我接近 解决方案 .


    学习示例 (吉特枢纽)

    我发现了一些“可靠”的牙签例子。到目前为止,他们希望在某个地方安装安卓系统。或者作为android的目标模块,或者使用相关的依赖项。

    给定(或假设)纯Java/TopPoice项目可以在桌面上或命令行上构建、调试和运行;就我而言,它似乎不是一个受欢迎的选择。 谷歌搜索 去了。。。

    ——

    1 回复  |  直到 6 年前
        1
  •  1
  •   Snicolas    6 年前

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

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

    smoothie实际上是tp中android特有的部分。