2017-08-03 22 views
1

當我使用maven創建jar文件並使用具有分類器的配置文件時,陰影jar文件中沒有名稱中的分類器。maven shade插件似乎不使用分類器名稱

Maven的版本:阿帕奇Maven的3.2.5

這裏是一個配置文件:

<profile> 
    <id>external</id> 
    <properties> 
     <envClassifier>external</envClassifier> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-jar-plugin</artifactId> 
       <executions> 
        <execution> 
         <configuration> 
          <classifier>external</classifier> 
         </configuration> 
         <id>external-package</id> 
         <phase>package</phase> 
          <goals> 
          <goal>jar</goal> 
          </goals> 
         </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

然而,正如我預期的(你可以看到大陰影罐子目標的jar文件沒有命名@ 111MB不具有 '外部' 的分類名:

  • 363 KB原始myjar這一-0.1-SNAPSHOT.jar
  • 111 MB myjar這一-0.1-SN APSHOT.jar
  • 362 KB myjar這一-0.1-快照external.jar

這裏是我的陰影配置:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>${maven-shade-plugin.version}</version> 
     <configuration> 
      <createDependencyReducedPom>true 
      </createDependencyReducedPom> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <relocations> 
       ---removed 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

我可以用shadedArtifactId強制輸出文件的名稱,但它似乎不應該需要。

任何想法?

謝謝

回答

0

所以我能夠通過使用finalName屬性得到這個工作。如果其他人使用這種技術或者如果有其他解決方案,會對此感到好奇。

<profile> 
     <id>external</id> 
     <properties> 
     <envClassifier>internal</envClassifier> 
     </properties> 
     <build> 
     <finalName>${project.artifactId}-${project.version}-external</finalName> 
     </build> 
    </profile> 
    </profiles> 
+0

你確定這實際安裝並部署陰影的JAR與所需的分類器? AFAIK,'finalName'不會影響'groupId:artifactId:packaging:classifier:version',在這個版本下你的文件將被安裝在本地存儲庫或部署到遠程存儲庫。因此,其他Maven構建將無法通過「external」分類器來找到它。仔細查看'install:install'的輸出以查看我的懷疑是否正確。希望這可以幫助。 –

0

根據我的經驗,陰影插件需要主要工件並用陰影替換它。

如果你想要的陰影的神器有一個分類,你應該將這些配置添加到樹蔭插件:

<shadedArtifactAttached>true</shadedArtifactAttached> 
<shadedClassifierName>external</shadedClassifierName> 

這不是我清楚爲什麼你需要使用的配置文件或額外的罐子插件配置分類。我認爲你可以使用陰影插件來生成你想要的分類罐子。澄清是否有某些要求強制您使用配置文件。