Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 使用自定义程序集描述符将类路径添加到清单_Maven_Classpath_Maven 3_Maven Assembly Plugin - Fatal编程技术网

Maven 使用自定义程序集描述符将类路径添加到清单

Maven 使用自定义程序集描述符将类路径添加到清单,maven,classpath,maven-3,maven-assembly-plugin,Maven,Classpath,Maven 3,Maven Assembly Plugin,我有以下自定义程序集: <assembly> <id>full</id> <formats> <format>jar</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet&g

我有以下自定义程序集:

<assembly>
    <id>full</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

满的
罐子
假的
${project.build.outputDirectory}
/
以及以下配置部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
        <archive>
            <manifest>
                <mainClass>com.example.MyExample</mainClass>
                <addClasspath>true</addClasspath>
                <classpathPrefix>./lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

org.apache.maven.plugins
maven汇编插件
src/main/assembly/assembly.xml
com.example.MyExample
真的
/lib/
包裹
单一的

根据maven assembly插件的文档,这应该向清单文件添加一个类路径项,但是它不起作用。如果我使用不推荐使用的程序集目标而不是单一目标,那么它确实有效

我注意到有人提到归档部分只提供jar格式,但这就是我正在使用的

当他们弃用assembly:assembly时,他们是否定义了正确执行此操作的新方法?我真的不喜欢使用不推荐的功能,但是如果它们破坏了工作方式,并且没有正确地记录它,我真的不知道如何避免这种情况


有没有人能举例说明如何正确地执行此操作?

这不是汇编插件的好用法。Java不在罐子中做罐子。您可以使用maven jar插件的配置选项将类路径添加到主jar的清单中,然后使用汇编插件收集依赖项,然后将其放在zip或tarball中的主jar旁边


您应该使用maven jar插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>main class</mainClass>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
</plugin>

org.apache.maven.plugins
maven jar插件
主类
真的
解放党/

尝试将
maven程序集插件更新到2.5版或更高版本


清单文件中意外缺少条目类路径似乎是由错误引起的。该漏洞已在插件的2.5版(2014年10月26日发布)中修复。

此后,我从jar中删除了依赖项,并将它们放在jar旁边的lib文件夹中。然而,问题仍然存在。程序集插件未按指定添加类路径。不应该这样做。jar插件有这个任务。根据汇编插件的文档,如果你告诉它添加类路径,它就会这样做。它适用于现在不推荐使用的其他目标。检查docs@bmargulies胖罐子呢,它将所有依赖项打包在一起?这不是问题的全部吗?好的,这就清楚了。我听说过一个Jar,但没有意识到没有一个Jar这是不可能的。没有帮助,升级到2.5的类路径仍然缺失:(