我有一個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