我有一个java枚举,用于我的web应用程序。我也有很多涉及枚举值的JavaScript代码。这将是理想的如果我可以从枚举中生成一个JavaScript文件作为Maven构建过程的一部分。有没有人知道解决这个问题或解决问题的优雅方法的项目? 谢谢!从java类生成JavaScript作为maven构建步骤
3
A
回答
2
事实证明,使用groovy maven插件作为“准备包”阶段有很好的方法。 这是代码: 在你的pom.xml添加此项:
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<id>script-prepare-package1</id>
<phase>prepare-package</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>${basedir}/src/main/groovy/GenerateJavaScriptEnum.groovy</source>
</configuration>
</execution>
</executions>
</plugin>
这是Groovy脚本,GenerateJavaScriptEnum.groovy,怎么看起来像:
def fields = []
com.foo.bar.YourEnum.values().each() { f->
fields << "${f.name()} : \"${f.getId()}\""
}
if (fields) {
log.info("Generating Javascript for com.foo.bar.YourEnum")
[
new File("${project.build.directory}/${project.build.finalName}/js"),
new File("${project.basedir}/src/main/webapp/js")
].each() { baseOutputDir->
if (!baseOutputDir.exists()) {
baseOutputDir.mkdirs()
log.info("Created output dir ${baseOutputDir}")
}
def outfile = new File(baseOutputDir, "YourEnum.js")
log.info("Generating ${outfile}")
def writer = outfile.newWriter("UTF-8")
writer << "// FILE IS GENERATED FROM com.foo.bar.YourEnum.java.\n"
writer << "// DO NOT EDIT IT. CHANGES WILL BE OVERWRITTEN BY THE BUILD.\n"
writer << "YourEnum = {\n"
writer << fields.join(",\n")
writer << "\n}"
writer.close()
}
}
2
我有同样的问题,并最终创建一个自定义标签,让我来遍历在我的JSP中的枚举,
public static Enum<?>[] getValues(String klass) {
try {
Method m = Class.forName(klass).getMethod("values", (Class<?>[]) null);
Object obj = m.invoke(null, (Object[]) null);
return (Enum<?>[]) obj;
} catch (Exception ex) {
return null;
}
}
然后在我的jsp我只是做,
var MyEnum = [
<c:forEach var="type" items="${foocustomtags:enumiter('com.foo.MyEnum')}">
'${type.value}': '${type.text}',
</c:forEach>
];
相关问题
- 1. 将修补程序作为maven构建步骤的一部分
- 2. Maven构建步骤,以私人仓库
- 3. 构建项目时执行构建步骤'生成'时出错
- 4. 作为bazel的构建步骤,
- 5. 查找Maven构建将执行的所有构建步骤
- 6. Jenkins - 构建步骤
- 7. cucumber-jvm java不生成步骤骨架
- 8. MAVEN构建不生成jar
- 9. gated checkin成功后的构建步骤
- 10. SonarQube无法完成构建后步骤
- 11. TeamCity,将在一个构建步骤中生成的标识传递给后续构建步骤
- 12. 部分Java文件在Maven构建期间不生成类
- 13. Maven + GAE步骤
- 14. 构建步骤'调用顶级Maven目标'标记构建为失败
- 15. 如何生成TFS 2010的详细构建步骤报告
- 16. 生成实体的步骤
- 17. Specflow并生成步骤
- 18. TeamCity同步构建步骤或等待一步完成
- 19. 构建编译器步骤
- 20. 避免CopyFilesToOutputDirectory构建步骤
- 21. SCons手动构建步骤
- 22. QBS后构建步骤
- 23. FKeditor和Spring MVC Maven集成步骤
- 24. 启用Maven与eclipse集成的步骤
- 25. Maven WSDL2 JAVA JAVA类不生成
- 26. JavaScript编译类型步骤
- 27. Jenkins在构建后动作后运行构建后步骤
- 28. 将doxygen作为VS2008中的自定义生成步骤运行
- 29. “构建步骤”调用顶级Maven目标'标记构建失败“错误
- 30. 将构建步骤中的参数传递给Jenkins中的构建后步骤
这是非常有用的,它upvoted ,但我仍然喜欢有一些代码生成,以便我能够从JavaScript代码中删除所有魔法字符串。谢谢! – 2012-03-01 21:53:59