如何解决Maven exec插件:classpath太长错误?

时间:2009-07-01 06:27:48

标签: java maven-2 classpath maven-plugin

我有一个包含大量jar文件依赖项的大型Java项目。当我尝试从Eclipse或Netbeans运行项目(使用exec)时,Maven抛出一个异常,结果是类路径上的条目数量过多(仅包括所需条目的2/3)。有没有人知道这个的解决方法? (除了构建一个可执行jar并从终端运行它。)是否可以“扩展”“classpath-buffer”-size?

3 个答案:

答案 0 :(得分:2)

这是一个Maven exec插件错误,它记录在MEXEC-68中,记者创建了一个补丁,所以我希望它很快就能解决。

一种解决方法是使用此配置为maven-jar-plugin将类路径添加到清单文件中,将依赖项添加到文件夹并将该文件夹添加到CLASSPATH envvar。

例如:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
  ...
</project>

这将在清单中添加如下内容:

Class-Path: plexus-utils-1.1.jar commons-lang-2.1.jar

如果JAR位于CLASSPATH文件夹中,您可以使用maven exec插件运行JAR,使用以下内容隐藏类路径:

mvn exec:exec [...] -Dexec.classpathScope="test"

我使用了-Dexec.classpathScope =“test”来使插件忽略依赖关系,只添加范围测试中的那些。

答案 1 :(得分:1)

Netbeans 6.10M1中修复了此问题。请看Bug 188864。如果你有一个旧版本,你仍然可以自己解决这个问题(你只需要在org-netbeans-modules-maven.jar中编辑一个xml文件)。

然后,不要忘记检查Maven最佳实践(http://wiki.netbeans.org/MavenBestPractices#Binding_Maven_goals_to_IDE_actions),其中解释了如何将maven目标绑定到IDE操作。

此致

马赫

答案 2 :(得分:0)

在Java 6中(我希望您使用),您可以在类路径条目中使用通配符。要获得准确的语法,请检查此页面Setting the classpath,然后搜索“Understanding the class path and package names”搜索右侧部分。

或者您尝试通过将所有必需的jar放在具有短路径的单个文件夹中来缩短路径。例如C:\jars\