我的maven在jdeps插件上失败了(我们需要它来升级到jdk11)。
对于windows,命令行太长。下面是我得到的错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jdeps-plugin:3.1.1:jdkinternals (default) on project myproject:
[ERROR] Exit code: 1 - La ligne de commande est trop longue.
[ERROR]
[ERROR] Command line was: cmd.exe /X /C
"
"C:\Program Files\Java\jdk-11.0.2\bin\jdeps.exe"
-cp "
C:\Users\Me\.m2\repository\com\something\firstJar.jar;
C:\Users\Me\.m2\repository\com\somethingElse\secondJar.jar;
C:\Users\Me\.m2\repository\com\somethingDifferent\someOtherJar.jar;
... and one more
... and another one
... I think you get the idea......."
--multi-release 9 D:\git\myworkspace\myproject\target\classes
"对于这个例子,我只放了3个jars,但我有这么多依赖项……
如何缩短此命令行?(并确保它不依赖于用户)
限制:这是一个共享项目,仅在我的计算机上更改任何内容都不是一个解决方案。
发布于 2019-03-19 20:40:39
maven- jdeps -plugin使用plexus-utils派生一个子进程来运行jdeps可执行文件。plexus-utils通过构建命令行并将其传递给cmd.exe来实现这一点。这是错误的方法,因为它将受到cmd.exe施加的8192个字符的限制。正确的方法应该是使用Java。这本身使用了Windows方法,在ProcessImpl.create上,该方法是通过对CreateProcess的Win32 API调用来实现的。后一个API有32k字符限制,对于大多数使用场景应该足够了。
这里有一个plexus bug report。你可能也想用maven- jdeps -plugin创建一个-- Java非常有用,所以不需要使用ProcessBuilder -utils来运行jdep。
发布于 2019-03-22 11:58:15
如果您使用的是Windows 10周年纪念更新、Windows Server 2016或更高版本,则可以将最大路径长度增加到超过默认的260个字符。
您可以将以下两行复制到扩展名为.reg的文件中,然后打开该文件。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001或者,打开注册表编辑器并浏览到该位置,然后将值从0更改为1。
发布于 2019-03-21 18:25:49
最好的方法是创建空的jar文件,并在清单中配置类路径。
甲骨文官方文档在Adding Classes to the JAR File's Classpath
maven-jar插件支持更新清单类路径属性:How to add Class-Path to the manifest file with maven
https://stackoverflow.com/questions/55123717
复制相似问题