我正在尝试制作模板,但无法找到这种情况的解决方案:
我有一堂课-仓库,类似:
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)
还有其他方法吗?