2016-11-07 5 views
0

私はいくつかのジップを取得し、内部にある5つのアーティファクト(jar + pom)を展開して展開します。mavenが単一のpomに複数のファイルをデプロイ

それは次のようになります。だから私は5つの成果物のための5つの実行を持っている

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-deploy-plugin</artifactId> 
       <version>2.8.2</version> 
       <executions> 
        <execution> 
         <id>default-deploy</id> 
         <phase>none</phase> 
        </execution> 
        <execution> 
         <id>deploy-api-jar</id> 
         <phase>deploy</phase> 
         <goals> 
          <goal>deploy-file</goal> 
         </goals> 
         <configuration> 
          <file>target/xxx.jar</file> 
          <pomFile>target/xxx/pom.xml</pomFile> 
          <sources>target/xxx-sources.jar</sources> 
          <repositoryId>${nexus-repository-id}</repositoryId> 
          <url>http://${nexus.deploy.server}/${nexus-repository-path}</url> 
         </configuration> 
        </execution> 

を。 それは最初のアーティファクトのために動作しますが、それは再びこれをアップロードしようとするため、それは失敗します。

[INFO] Uploading: http://www.zzz.com:8081/nexus/content/repositories/mobile-r/xxx/server/deployall/8.1.17/deployall-8.1.17-dependencies.dot 

そしてdepedencies.dot 8.1.17が既に展開されているので、それは400 BadRequestで失敗します。

各アーティファクト間にdepedencies.dotを試してアップロードしようとしているのはなぜですか?それを無効にすることはできますか?

+0

これらのファイルは、Mavenビルド自体でビルドされているのですか、そうでなければ作成されたファイルですか? – khmarbaise

+0

関連性があります:http://stackoverflow.com/questions/40402597/maven-deploy-file-goal-why-does-the-first-execution-interfere-with-the-secondo-o –

答えて

0

編集:答えはMavenとは、このようにあなたのネクサスのみ与えられた座標のセットのための1つのアーティファクトを可能にするので、それが失敗した時点

を逃しました。

したがって、すべてを同じ座標に配置する場合は、異なる分類子を指定する必要があります。

あなたがしたいのは、非常に不規則なビルドスクリプトの使用です。 Mavenは、1つのPOMからのすべての成果物が同じ座標(ただし異なる分類子)を持つと仮定します。必要に応じて、成果物をプロジェクトに添付し、通常のdeploy:deployタスクをライフサイクルで使用してアップロードできます。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
    <execution> 
     <id>attach-artifacts</id> 
     <phase>package</phase> 
     <goals> 
     <goal>attach-artifact</goal> 
     </goals> 
     <configuration> 
     <artifacts> 
      <artifact> 
      <file>file1</file> 
      <type>extension of your file</type> 
      <classifier>x</classifier> 
      </artifact> 
      <artifact> 
      <file>file2</file> 
      <type>extension of your file</type> 
      <classifier>y</classifier> 
      </artifact> 
      ... 
      </artifacts> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

しかし、あなたは5つの論理和の成果物をアップロードするために、POMはあなたが望むものではない、( mvn deploy:deploy-file複数回呼び出す)代わりに、アップロードのためのbashスクリプトを使用する:あなたはそのため build-helper-maven-pluginを使用することができます。

+0

あなたはgroupIdを意味します:artifactId ?しかし、彼らは同じ座標を共有していない、彼らは5つの異なる人工物です。私は同じ、deploy-fileを実行するbashスクリプトを呼び出すことによって動作させました。このソリューションはお勧めしませんか? – orepor

+0

私は、異なるファイルに対して異なるPOMを使用している部分を見逃しました。その場合、bashファイルは実際には最もクリーンな解決策です(私の答えの最後の段落)。実際のプロジェクトはありませんので、単純にアップロードしてください。なぜこれが起こっているのかについては、あなたの質問に対するJF Meierのコメントは正しい説明を指しています。 – blackbuild

関連する問題