当前位置: 首页 > 知识库问答 >
问题:

Maven POM依赖项和程序集

陆昂然
2023-03-14

我在pom.xml中与type=pom有依赖关系。在这个依赖项中,我有一组type=jar依赖项。

现在我需要将这些JAR中的一些添加到assembly中(包括它们以使用DependencySet->includes构建)。

如果我设置了“include”组和POM依赖项的工件,那么在我的构建中得到的结果是POM.xml。

如果我设置到`“include”组和来自外部pom的依赖项工件,我会得到一个构建错误:

程序集配置不正确:一个或多个筛选器的条件不匹配。

有人看到这个问题了吗?

这是我的主要POM:

    <dependency>
        <groupId>slf4j</groupId>
        <artifactId>slf4j</artifactId>
        <type>pom</type>
    </dependency>

这是我的外部POM:

<dependencies>
<dependency>
  <groupId>slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.0</version>
  <type>jar</type>
</dependency>
<dependency>
  <groupId>slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.0</version>
  <type>jar</type>
</dependency>

null

这是我的assembly.xml:

<dependencySets>
    <dependencySet>
        <outputDirectory>output dir</outputDirectory>
        <includes>

            <include>apache:commons-configuration</include>
            <include>apache:commons-logging</include>
            <include>apache:commons-lang</include>
            <include>org.perf4j:perf4j</include>

            **Here I want to add slf4j-api and slf4j-log4j12 from external pom**
        </includes>
        <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
        <useStrictFiltering>true</useStrictFiltering>
        <useTransitiveDependencies>false</useTransitiveDependencies>
        <useProjectArtifact>false</useProjectArtifact>
        <scope>runtime</scope>
    </dependencySet>

这是主POM:

    <dependency>
        <groupId>slf4j</groupId>
        <artifactId>slf4j</artifactId>
        <type>pom</type>
    </dependency>

这是外部POM:

<dependencies>
<dependency>
  <groupId>slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.0</version>
  <type>jar</type>
</dependency>
<dependency>
  <groupId>slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.0</version>
  <type>jar</type>
</dependency>

null

这是assembly.xml:

<dependencySets>
    <dependencySet>
        <outputDirectory>output dir</outputDirectory>
        <includes>

            <include>apache:commons-configuration</include>
            <include>apache:commons-logging</include>
            <include>apache:commons-lang</include>
            <include>org.perf4j:perf4j</include>

            **Here I want to add slf4j-api and slf4j-log4j12 from external pom**
        </includes>
        <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
        <useStrictFiltering>true</useStrictFiltering>
        <useTransitiveDependencies>false</useTransitiveDependencies>
        <useProjectArtifact>false</useProjectArtifact>
        <scope>runtime</scope>
    </dependencySet>

共有1个答案

呼延鸿畅
2023-03-14

在myDependencySet中,UseTransitiveDependencies应设置为“true”,而不是“false”。

 类似资料:
  • 问题内容: 通过不将数十个JAR依赖项包装到lib目录中,OSGi似乎具有一个小的可部署工件的巨大好处。但是,我找不到任何能告诉我一种简单,可靠的方式来将依赖项部署到容器的方法。例如,我有一个使用CXF和几个Spring子项目的应用程序。如果需要将此应用程序部署到新的Glassfish服务器上,那么最好的方法是确保安装所有依赖项? 我正在使用Maven, 似乎 可以使用某种方法来查看META-IN

  • 我对整个Java生态系统还是个新手,我已经花了几个小时的时间来获得一个外部依赖者来与Intellij一起工作。我使用一个简单的Java应用程序,它包含一个,其中包含: 包含对com.google.guava的依赖项(必需),如下所示: 每当我尝试调试时,都会得到无法加载的错误。我还尝试克隆https://github.com/tfnico/guava-example(将Java版本更新为受支持的版

  • 我正在试着为Android Q安装系统映像的版本7。应该是测试版6。当我尝试在Android studio中更新时,我收到一个错误,说Emulator29.1.7找不到,但我看不到该模拟器的任何更新。我要做什么?我使用的是Android studio 3.4.2

  • 我在Netbeans-8工作 我正在构建两个项目。Project1是Project2的依赖项。 如果我在两个项目中都做了更改1 我碰巧经常更改项目1。在我的IDE中使用maven之前,我习惯于构建一个依赖项目,也构建它的依赖项。我的意思是这就是构建系统中的依赖项的全部含义... 如何解决这个问题,以便project2上的“使用依赖项构建”也构建project1?

  • 问题内容: 我有一个独立的Java应用程序,我想将其打包为:myapp.jar。并将所有相关的jar文件复制到“备用文件夹”。理想情况下,我想让Maven更新META- INF文件,以将所有类路径依赖项jar条目添加到其中。 例如,如果我的项目引用了commons.jar,并且当我使用此插件构建程序集时,它将所有.class文件和程序包从commons.jar复制到myappjar- with-d

  • 使用STS点击pom.xml文件时,我可以查看这些选项卡 如何使用intelliJ IDEA,特别是依赖层次结构来查看所有这些选项卡?我试图通过右键单击pom来查看它。xml