使用maven程序集提取存储库的子集

时间:2013-02-13 10:08:43

标签: maven maven-assembly-plugin

使用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>

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

<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可以做到吗?

1 个答案:

答案 0 :(得分: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列表。