1

使用 maven-assembly-plugin 版本 2.4,我想构建我的存储库的 zip,其中仅包含以mypackage开头的 groupid 下的 jar 。

使用带有模式mypackage.*:*的存储库不起作用。构建成功,但我的存储库包含我所有的依赖项!

<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<repositories>
    <repository>
        <includes>
            <include>mypackage.*:*</include>
        </includes>
        <scope>test</scope>
        <includeMetadata>false</includeMetadata>
    </repository>
</repositories>

使用具有相同模式的依赖项集是有效的(除了所有 jars 都在根文件夹中......):

<formats>
  <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
  <dependencySet>
    <includes>
      <include>mypackage.*:*</include>
    </includes>
    <unpack>false</unpack>
    <scope>test</scope>
    <useProjectArtifact>false</useProjectArtifact>
  </dependencySet>
</dependencySets>

配置有问题吗?是否可以使用 maven-assembly 做到这一点?

4

1 回答 1

0

当您使用repositories标记指定程序集时,项目依赖项的所有依赖项也会被导入,除非您在程序集定义中使用标记明确排除它们excludes

例如 :

<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<repositories>
    <repository>
        <includes>
            <include>mypackage.*:*</include>
        </includes>
        <excludes>
            <exclude>commons-cli:*</exclude>
        </excludes>
    </repository>
</repositories>

这将允许您排除依赖项(如果您的项目或其依赖项之一当然使用它) commons-cli:*及其依赖项,问题是您必须列出要排除的依赖项,但您可以轻松地运行一个mvn dependency:tree列表你的项目。

于 2015-05-06T13:07:35.463 回答