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
Java 如何从已编译的jar中删除运行时依赖项_Java_Maven_Dependencies - Fatal编程技术网

Java 如何从已编译的jar中删除运行时依赖项

Java 如何从已编译的jar中删除运行时依赖项,java,maven,dependencies,Java,Maven,Dependencies,我的Maven项目在构建时会生成一个jar,供我组织中的许多应用程序使用。但是,在一个方面,较大的jar文件大小会导致连接超时,从而导致部署问题,而较小的jar不会导致此问题。对于这个环境,我想去掉几个导致jar大小膨胀的大型运行时依赖项,并在部署点分别加载它们。显然,我在编译过程中需要这些依赖项,否则就会失败 所以我的问题是:有没有一种方法可以从已编译的jar中提取运行时依赖项? <dependency> <groupId>jun

我的Maven项目在构建时会生成一个jar,供我组织中的许多应用程序使用。但是,在一个方面,较大的jar文件大小会导致连接超时,从而导致部署问题,而较小的jar不会导致此问题。对于这个环境,我想去掉几个导致jar大小膨胀的大型运行时依赖项,并在部署点分别加载它们。显然,我在编译过程中需要这些依赖项,否则就会失败

所以我的问题是:有没有一种方法可以从已编译的jar中提取运行时依赖项?


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>compile</scope>
        </dependency>
朱尼特

至于您关于可传递依赖项的问题,不,这是行不通的。当这些由父依赖项导入时,使用的范围也将从jar中删除


因此,您可以在pom中将它们声明为独立的依赖项,也可以在Runtime中提供它们。

就像每次我向SE发布问题一样,我想我在多搜索几分钟后找到了答案。我可能可以在Maven中使用
scope
标记在运行时排除依赖项。但是,我可以将此范围标记用于可传递依赖项吗?谢谢您的回答!根据我的评论,我认为我找到了解决过渡问题的方法。我排除了pom依赖项中最糟糕的可传递依赖项,然后在pom级别声明这些可传递依赖项,并使用
提供的
标记声明它们将在运行时由系统可用。另外,我认为您的意思是提供
而不是
编译
<代码>编译
是默认行为,不声明范围