Play框架 - 是否可以强制Play生成.class文件,即使在PROD模式下也是如此?

时间:2012-01-04 18:12:59

标签: playframework google-reflections

在我的Play应用程序中,我使用Reflections(http://code.google.com/p/reflections/)来获取一些带有特定注释的字段

Reflections需要访问.class文件才能创建索引。在DEV模式下,它很有效,因为Play会在tmp / classes中生成.class文件。但在PROD模式下,默认情况下Play不会生成这些.class文件。因此我的申请不起作用!

有没有办法强制Play生成.class文件,即使在PROD模式下?

3 个答案:

答案 0 :(得分:2)

您应该首先尝试使用play precompile预编译代码。然后使用play start -Dprecompiled = true启动应用程序 这应该可以解决问题。

答案 1 :(得分:0)

您检查过“预编译”目录吗?在PROD模式下运行时,类文件放在此处。

  • 史蒂夫

答案 2 :(得分:0)

另一个好的解决方案是使用Reflections在编译时扫描并将元数据保存为XML一次,而不是在引导时收集XML并初始化Reflection而不扫描。

如果使用Maven,您首先需要配置插件:

<plugin>
    <groupId>org.reflections</groupId>
    <artifactId>reflections-maven</artifactId>
    <version>0.9.8</version>
    <executions>
        <execution>
            <goals>
                <goal>reflections</goal>
            </goals>
            <phase>process-classes</phase>
        </execution>
    </executions>
</plugin>

而不是在bootstrap:

Reflections reflections =
            isProduction() ? Reflections.collect() : new Reflections("your.package.here");

如果不使用Maven,您可以通过编程方式进行操作。有关详细信息,请参阅Reflections UseCases Wiki

中的“收集预扫描的元数据”