【问题标题】:How to use Maven classpath to run Java main class?如何使用 Maven 类路径运行 Java 主类?
【发布时间】:2011-06-07 02:44:10
【问题描述】:

我目前正在使用 Maven 构建我的 Rhino JavaScript 项目、下载依赖库并在运行时管理类路径。我可以使用 Maven exec 插件运行 JavaScript 入口点,方式如下:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>org.mozilla.javascript.tools.shell.Main</mainClass>
                <classpathScope>runtime</classpathScope>
                <arguments>
                    <argument>path/to/entryPoint.js</argument>
                </arguments>
            </configuration>
        </plugin>

这很好用,但问题是 maven 需要大约 10 秒才能启动,这比我的程序运行所需的时间大约长 10 倍。有没有办法:

  1. 提高 maven exec 插件的性能,从而缩短启动时间,或者
  2. 导出 maven 将在运行时使用的类路径,以便我可以从脚本启动我的程序?

【问题讨论】:

    标签: java maven rhino


    【解决方案1】:
    1. 您可以使用 -o / --offline 开关告诉 Maven 不要检查快照或插件更新。

    2. 使用appassemblerassembly 插件生成启动脚本,这些脚本将自动(在应用程序汇编程序的情况下)引用所需的类路径。

    【讨论】:

    • -o 似乎并没有影响 maven 启动性能,但 appassembler 似乎正是我在第二个子句中所寻找的。​​span>
    • 有没有办法自定义appassembler程序的输出来指定默认参数传递给生成脚本中的主类?例如原始问题中的 path/to/entryPoint.js。
    • 我不相信,但你可以写a wrapper script which invokes the generated one。或者,您可以打包自己的启动脚本,因为(我假设)类路径/依赖项并没有真正经常更改。
    猜你喜欢
    • 2012-05-10
    • 2020-10-02
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多