私はmavenとgitの両方に不慣れで、プロジェクトの設定について助けを求めていました。
Mavenフェーズにリンクされている間にgitからプッシュ/プルするpomの目標を定義する方法はありますか?たとえば、Mavenのインストールフェーズ中にgitからプルできますか?
はいの場合、それはどのように達成できますか?コード例をいただければ幸いです。
良いアイデアかどうかは別として、チェックアウトを行う方法は次のとおりです(引くMavenを使用してGithubからクローンを作成します。pom.xmlを次のようにします。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.javamagazine</groupId>
<artifactId>engesoft</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>engesoft Maven Webapp</name>
<url>http://maven.apache.org</url>
<scm>
<connection>scm:git:git://github.com/vitorsouza/EngeSoft.git</connection>
<developerConnection>scm:git:https://vitorsouza@github.com/vitorsouza/EngeSoft.git</developerConnection>
<url>https://github.com/vitorsouza/EngeSoft</url>
</scm>
</project>
次に、を使用しますmvn scm:checkout
。これを実行すると、コードがフォルダーにプルされましたtarget/engesoft
。おそらく、別の場所に配置するように構成する方法があります。次のページをチェックしてください。
Mavenビルド中にこれを行う代わりに、 JenkinsのようなCIサーバーを使用します。Mavenを実行するgit pull
前に実行するため、ビルドツールはその主な目的であるソースコードのビルドに集中できます。
これにより、プルは必要なときにのみ発生するため、開発がより簡単になります。いつも引っ張ると、別の開発者が何かを変更する可能性があり、予期しないエラーが発生します。
Vitorが参照しているscm:checkoutの目標はクローンであり、プルではありません(Gitの大きな違い)。
私はあなたが説明していることをするためにexecゴールを使わなければなりませんでした。また、ビルドが行われるたびにクローン全体を作成したくありませんでした。代わりに、git reset --hardを使用してから、-f origin Release:Releaseを(exec経由で)プルします。
より良い方法を見つけた場合(そしてそれが必要な場合)、ここに投稿します。