Android Freemarker类合并

时间:2018-06-19 17:10:47

标签: android merge kotlin freemarker

我正在尝试制作模板,但无法找到这种情况的解决方案:

我有一堂课-仓库,类似:

interface UserRepository {
    fun registryUser(user: UserEntity): Observable<UserEntity>
}

我想用我的模板向该接口添加一个方法,例如updateUser()。这意味着我要实现:

interface UserRepository {
    fun registryUser(user: UserEntity): Observable<UserEntity>
    fun updateUser(user: UserEntity): Observable<UserEntity>
}

在template.xml中,我创建了一个新参数:

<parameter
    id="methodName"
    name="Method Name"
    type="string"
    constraints="nonempty|unique"
    default="updateUser"
    help="creates method in Repository" />

...并且此代码用于BlankRepository:

    interface UserRepository {
        fun ${methodName}()
    }

问题:如何将当前的UserRepository.kt与模板代码合并?

尝试在这一行的配方.xml.ftl中执行此操作:

    <merge from="root/src/app_package/Repository.kt.ftl"
         to="app/src/main/java/${slashedPackageName(packageName)}/domain/modules/${moduleName}/${entityName}Repository.kt" />

但是它不起作用!堆栈跟踪:

    Only XML or Gradle files can be merged at this point: C:\Users\,,\domain\modules\moduleName\Repository.kt
java.lang.RuntimeException: Only XML or Gradle files can be merged at this point: C:\Users\..\domain\modules\moduleName\Repository.kt
    at com.android.tools.idea.templates.recipe.DefaultRecipeExecutor.merge(DefaultRecipeExecutor.java:303)
    at com.android.tools.idea.templates.recipe.Recipe$MergeInstruction.execute(Recipe.java:215)
    at com.android.tools.idea.templates.recipe.Recipe.executeInstructions(Recipe.java:120)
    at com.android.tools.idea.templates.recipe.Recipe.execute(Recipe.java:105)

还有其他方法吗?

0 个答案:

没有答案