4

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

4

7 回答 7

2

你有没有尝试过:

<useWildcardClassPath>true</useWildcardClassPath>

这为我解决了这个问题,但是,如果你还没有,你还需要确保你正在使用:

<repositoryLayout>flat</repositoryLayout>
于 2015-04-28T13:11:27.900 回答
1

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

于 2010-04-09T20:59:55.333 回答
1

我建议在http://jira.codehaus.org/browse/MAPPASM中提交一个错误来解决它。我编写了 JSW 集成并且知道它需要更多的工作。

于 2010-04-12T06:44:44.710 回答
1

您也可以尝试扁平化存储库(即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>
于 2013-06-24T15:14:43.467 回答
1

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

所以如果你的项目有太多的依赖,那么它会生成很长的类路径。

为了克服这种情况,maven-appassembler 提供了选项

在配置部分下添加这两行

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

这两个选项的文档:(文档

使用通配符类路径

有时,您有很多依赖项,这意味着类路径很长,并且变得太长(尤其是在基于 Windows 的平台上)。在这种情况下,此选项可以提供帮助。如果您激活此选项,您的类路径仅包含一个类路径通配符 (REPO/*)。但请注意,这只适用于与 Java 1.6 及更高版本以及 repositoryLayout flat 结合使用。

存储库布局

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

于 2018-10-01T06:01:18.133 回答
0

作为一个长镜头...

从未使用过 JSW,也许您可​​以根据http://maven.apache.org/plugins/maven-assembly-plugin/source-repository.html上的代码创建自己的程序集插件并使用它。

于 2010-04-01T12:03:23.883 回答
0

我在这里提交了一个 JIRA 问题:

http://jira.codehaus.org/browse/MAPPASM-203

你可以去投票。

于 2013-10-10T22:38:29.607 回答