Maven 2 appassembler和长类路径

Maven 2 appassembler和长类路径,maven-2,appassembler,java-service-wrapper,Maven 2,Appassembler,Java Service Wrapper,我正在使用maven appassembler创建我的程序集。我的类路径太长,我得到“输入行太长了”。建议使用booter windows平台,但我只能使用Java服务包装器。我可以用java6通配符类路径和java服务包装器吗?作为一个长远的选择 由于从未使用过JSW,也许您可以基于上的代码创建自己的汇编插件,并使用它。答案似乎是“否”,而不编写插件或扩展现有插件,这不是对原始问题的“答案”。我建议提交一个bug来解决它。我编写了JSW集成,并且知道它需要更多的工作。您还可以尝试扁平化存储库(

我正在使用maven appassembler创建我的程序集。我的类路径太长,我得到“输入行太长了”。建议使用booter windows平台,但我只能使用Java服务包装器。我可以用java6通配符类路径和java服务包装器吗?

作为一个长远的选择


由于从未使用过JSW,也许您可以基于上的代码创建自己的汇编插件,并使用它。

答案似乎是“否”,而不编写插件或扩展现有插件,这不是对原始问题的“答案”。

我建议提交一个bug来解决它。我编写了JSW集成,并且知道它需要更多的工作。

您还可以尝试扁平化存储库(即lib)目录的目录结构。默认情况下,appassembler保留深层目录结构,这会给类路径增加不必要的长度

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>appassembler-maven-plugin</artifactId>
      <version>1.3.1</version>
      <configuration>
        <programs>
          <program>
            <mainClass>com.mycompany.app.MyApp</mainClass>
            <name>runMyApp</name>
          </program>
        </programs>
        <repositoryLayout>flat</repositoryLayout>
      </configuration>
    </plugin>
  </plugins>
</build>

org.codehaus.mojo
appassembler maven插件
1.3.1
com.mycompany.app.MyApp
runMyApp
平的

我在这里提交了JIRA问题:

你可以去投票支持它。

你试过:

<useWildcardClassPath>true</useWildcardClassPath>
true
这为我解决了问题,但是,如果您还没有,您还需要确保您正在使用:

<repositoryLayout>flat</repositoryLayout>
flat

在windows命令提示符下,可在命令提示符下使用的字符串的最大长度为8191个字符

因此,如果您的项目有太多的依赖项,那么它将生成长的类路径

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>appassembler-maven-plugin</artifactId>
      <version>1.3.1</version>
      <configuration>
        <programs>
          <program>
            <mainClass>com.mycompany.app.MyApp</mainClass>
            <name>runMyApp</name>
          </program>
        </programs>
        <repositoryLayout>flat</repositoryLayout>
      </configuration>
    </plugin>
  </plugins>
</build>
为了克服这种情况,maven appassembler提供了选项

在配置部分下添加这两行

<configuration>
    <repositoryLayout>flat</repositoryLayout>
    <useWildcardClassPath>true</useWildcardClassPath>
</configuration>

平的
真的
这两个选项的文档:()

使用通配符类路径

有时,您有许多依赖项,这意味着拥有很长的类路径,并且变得太长(特别是在基于Windows的平台上)。在这种情况下,此选项会有所帮助。如果激活此选项,则类路径仅包含类路径通配符(REPO/*)。但请注意,这只适用于Java1.6及以上版本和repositoryLayout flat

存储布局

生成的Maven存储库的布局。支持的类型-“默认”(Maven2)|“遗留”(Maven1)|“扁平”(扁平库/样式)。只有在Maven 2.2.1及之前版本下运行时,才支持“legacy”样式


该FAQ与其他启动脚本相关,而不是JSW。您能否发布您在上下文中看到的特定错误,以及生成的
wrapper.conf
”中出现了多少类路径条目,以及为什么不使用booter平台?@Yaneeve“我必须使用Java服务包装器”@Brett,无法准确回忆,但已加载。我使用的公司框架解决方案有超过70个依赖项,其中一些是假的。问题是,我希望使用一些已经为我编写的东西。并不是说我懒惰,但在公司环境中编写插件并不容易,因为破解生成脚本的简单(但手动和非自动)步骤需要几秒钟。