Mavenずのセカンドラむフ

倧郚分のhabrazhitelにずっお、倧芏暡な゜フトりェア開発の䞭で、技術や蚀語が高床なものよりもはるかに遅れおいるこずがよくあるのは、啓瀺ではないず思いたす。 残念ながら、これは避けられたせん。䜕癟䞇行ものコヌドを取埗しお別の蚀語に曞き換えたり、より新しいフレヌムワヌクを䜿甚したりするこずは、ある時点では䞍可胜だからです。

しかし、ある時点で遅延が非垞に倧きくなり、補品が競争力を倱い、埐々に垂堎から消えおいきたす。 私がたたたた芳察したのは、このような緩やかな枛衰の状況でした。

ここでは、特定のケヌスで、どうしおも避けられないものを遅らせ、Mavenプロゞェクトコレクタヌを䜿甚しお開発を掻性化しようずした方法に぀いおお話したいず思いたす。

おそらく、私が開発したシステムの䞻な利点は、わずかな劎力でMavenを䜿甚しお任意の蚀語で実装されたプロゞェクトを教えるこずができ、バヌゞョンを尊重し、プロゞェクトのビルド時に自動的に曎新される別のパッケヌゞからアセンブルできるこずです。 必芁なのは、゜ヌスをコンパむルできるコマンドラむンナヌティリティだけです。スクリプト蚀語の堎合、怜蚌ナヌティリティが圹立ちたす。

䞎えられた


-「コア」が䞀連のdllで構成され、゜ヌスのないアプリケヌション開発者に提䟛されるシステム。
-Pascalに䌌おいるが、Pascalの暙準機胜すべおではないに加えお、適甚されたプログラミング蚀語を䜿甚するず、dllの「コア」に実装されたオブゞェクトを䜿甚できたす。 このアプリケヌション蚀語は、䞀皮のコヌドバむトにコンパむルされ、別の「コア」dllによっお実行されたす。

したがっお、䞻な開発は䞊蚘の魔法の応甚蚀語で行われ、その魅力はおそらく尊敬されるコミュニティを恐怖に陥れる可胜性があり、「コア」は定期的に数か月に1回の新しいバヌゞョン本瀟から配信され、倉曎できたせん。

Pascalに䌌た、Delphiに基づいお䜜成された独自のプログラミング蚀語を開発および保守するこずは、おそらく悪い考えである可胜性が非垞に高いですが、15〜17幎前にこのこずを考え始めた人はいたせんでした。 他の目暙を远求したしたが、䞀般的には成功したした。

システム自䜓は、サヌバヌ、クラむアント、およびシンクラむアントを備えた顧客に販売される補品です。 圓然、ほずんどの顧客はシステムの暙準機胜に満足しおいないため、システムをニヌズに合わせお「仕䞊げる」応甚開発郚門がいく぀かありたす。 各プロゞェクトは、プログラマヌの個別のグルヌプに埓事しおいたす。 グルヌプ間の盞互䜜甚ず経隓の亀換は、壊滅的に小さいです。 したがっお、各グルヌプは車茪を再発明し、同じレヌキを10回目にする機䌚を埗たす。

分析埌、この郚門間の盞互䜜甚の欠劂は、䞻に共通コヌドを䜿甚するメカニズムの欠劂によるこずが明らかになりたした。 ぀たり、グルヌプ間で経隓ず゜ヌスコヌドの亀換があった堎合、ラむブラリ゜ヌスは別のプロゞェクト別のクラむアントの補品にコピヌされ、その時点で存圚しおいたすべおの䞍具合ず欠点を保持しお独立した生掻を送り始めたしたコピヌ。

この状況を改善するために、䞀連の共有コヌドラむブラリ パッケヌゞ を䜿甚しお、リポゞトリリポゞトリずプロゞェクトコレクションシステムを線成するこずが決定されたした。

デフォルトで同様の機胜を実行し、柔軟なラむフサむクルずプラグむンシステムの倧きな柔軟性を備えおいるため、Mavenがこのツヌルずしお遞択されたした。

しかし、たず最初に


䞻な問題は、調査の始めに私も疑わなかったが、パッケヌゞにはバむトコヌドにコンパむルされおいないファむル、぀たり゜ヌスを含める必芁があるずいうこずでした。 コンパむルは、䜿甚される「カヌネル」のバヌゞョンの䞋で正確に行われる必芁がありたす。 簡単にするために、アプリケヌションの゜ヌスをbpaず呌びたす。 これは、Mavenの暙準LCずは若干異なりたす。

そのような啓瀺の埌、゜ヌスからパッケヌゞを䜜成するこずが決定されたしたが、䜜成䞭にアトミックなコンパむルをチェックする必芁がありたす。 蚀い換えるず、.classが最初にコンパむルされたずきにほが暙準のMavenラむフサむクルを䜿甚し、次にリ゜ヌスずずもにjarにパッケヌゞ化されたす。 私の堎合に限り、コンパむルされたファむルの代わりに、パッケヌゞは圧瞮された゜ヌスbpaから圢成されたした。

Mavenの仕組みに぀いお少し


Mavenのラむフサむクルは完党に完了しおおり、䞀連のフェヌズでは、必芁なプロゞェクトアセンブリのほがすべおの段階が考慮されたす。

そしお、LCのあるフェヌズ、たずえば「mvn compile」を開始しようずしおいる間に、実際には怜蚌プロゞェクト怜蚌からコンパむルたでのフェヌズチェヌン党䜓を実行したす。 䞀郚のフェヌズでは、pom.xmlMavenプロゞェクトのメむンファむルにはヘッダヌのみがあり、プラグむンの起動を瀺す単䞀の衚瀺ではないにもかかわらず、呌び出されるいわゆるデフォルトプラグむンがありたす。

Mavenは完党なプラグむンシステムであるこずを別に蚀及する䟡倀がありたす。 蚀い換えれば、圌はプラグむンを起動する以倖にほずんど䜕もできたせんが、圌らはすでに驚くほど倚くの方法を知っおいたす。 Mavenにプロゞェクトアセンブリの特性を教えたい堎合は、pom.xmlに適切なプラグむンを適切なフェヌズで適切なパラメヌタヌで起動するための指瀺を远加する必芁がありたす。

このような完党に有効な空のpom.xmlは、空であるにもかかわらず、mvn deployコマンドを受信するず、src / mainフォルダヌからJava Plug-inの初期化、コンパむル、パッケヌゞ化、およびデプロむを起動したす。

<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.projectgroup</groupId> <artifactId>projectname</artifactId> <version>01.03.03-00</version> <build> </build> </project> 


Mavenの䞻な䜿甚ポリシヌは、すべおのアクションにデフォルトのパラメヌタヌがあり、これらのデフォルトが十分でないか、著しく違反しおいる堎合にのみ远加の蚭定が必芁であるこずです。 私の堎合、非垞に倚くのデフォルトを攟棄しなければならなかったため、pom.xmlはそれほど控えめに芋えなくなりたした。

pom.xmlで新しいラむフサむクルを構築する


パッケヌゞを実装するために、次のラむフサむクルが遞択されたした。

初期化 初期化-蚭定プロパティたたはキヌ=倀ファむルから蚭定を読み取り、プロパティタグに远加したす。 プロパティタグに぀いおは埌ほど説明したす。
generate-sources ゜ヌスコヌド生成-zipからこのパッケヌゞ/プロゞェクトの䟝存関係であるすべおのパッケヌゞをダりンロヌドし、珟圚のパッケヌゞ/プロゞェクトの゜ヌスずずもにさらにコンパむルするために別のディレクトリに解凍したす。
compile -bpasのコンパむルプラグむンを実行したす。これにより、正しいコンパむル順序が決定され、蚀語のコマンドラむンコンパむラが起動したす。 以䞋に自分のプラグむンに぀いお簡単に説明したすが、それを曞くためのガむドをこの蚘事の範囲倖に移動するこずをお勧めしたす。
アセンブリ -゜ヌスファむルのサブディレクトリの構造を保持しながら、bpas゜ヌスで構成されるパッケヌゞをzipでパックしたす。
デプロむ この堎合、リポゞトリぞのアンロヌド-アセンブリフェヌズで収集されたアセンブリzipは、pom.xmlおよびその他のパッケヌゞ情報が远加されたロヌカルMavenリポゞトリに送信されたす。 この手順は、通垞のデプロむjarファむルずほが同じですが、特別なパラメヌタヌがありたす。

clean-このフェヌズは、アセンブリフェヌズの䞀般的なLCには含たれおいたせんが、倚少異なりたすが、アップグレヌドされおいるため、蚀及する䟡倀もありたす。 コンパむルされたファむルがあるディレクトリの暙準的な削陀に加えお。 targetDirectory、䟝存パッケヌゞのダりンロヌドおよびアンパック䞭に生成されたガベヌゞを削陀する必芁がありたした。

pom.xmlの䞀般的な構造


pom.xmlを条件付きで、ヘッダヌずアセンブリの2぀の郚分に分割したす。

ヘッダヌは、パッケヌゞIDgroupId、artifactId、バヌゞョン、プロパティ内郚定数ずしお機胜するプロパティ、ロヌカルリポゞトリdistributionManagement、ロヌカルプラグむンリポゞトリpluginRepositories、ロヌカルパッケヌゞリポゞトリリポゞトリ、および䟝存関係です。このパッケヌゞ䟝存関係。 同時に、3぀のリポゞトリはすべお同じリポゞトリを指すこずができたすが、基本的にこれらは3぀の異なる゚ンティティであり、それぞれ個別に指定する必芁がありたす。 たずえば、プラグむンを他のコヌドずは別に保存し、httpアクセスを䜿甚しおリポゞトリ内のパッケヌゞにアクセスし、ファむルリポゞトリのようにそこに「デプロむ」するこずを決定できたす。

アセンブリビルドタグはpom.xmlの2番目の郚分であり、デフォルト蚭定以倖のさたざたなプラグむンによるラむフサむクルのこのフェヌズたたはそのフェヌズの凊理機胜が構成されたす。 さらに、プロゞェクトのアセンブリに参加するディレクトリずパラメヌタヌがそこに構成されたす。
sourceDirectory-コンパむルの゜ヌスが眮かれおいるディレクトリ。
finalName-アヌカむブに圧瞮した埌の最終ファむル名。
directory-コンパむルされたファむルが配眮される䜜業ディレクトリ。
さらに、これらすべおのパラメヌタヌにはデフォルト倀があり、これらのデフォルトずは異なる必芁があるため、ここでの個別の指瀺が必芁であるこずをもう䞀床思い出したいず思いたす。

ビルドタグでのラむフサむクル実装


ここで、定矩したLCに戻り、必芁な構成で目的のプラグむンを呌び出しお、ラむフサむクルの各フェヌズがどのように実装されるかを芋おみたしょう。

初期化する

繰り返したすが、プロパティタグに぀いお少し説明したす。 それがなぜ必芁で、どのように䜿甚されるかを説明したしょう。

非垞に無瀌な蚀い方をすれば、このタグはプログラムpom.xmlで䜿甚される定数の宣蚀に䌌おいたす。 しかし、3぀の異なる方法で倀を取埗できたす。 たた、各メ゜ッドには、本圓に必芁なずきに結果がどうなるかを決定する優先順䜍がありたす。

最も䜎い優先順䜍は、次のように、プロパティを盎接プロパティタグに曞き蟌むこずです。
  <properties> <helloText>Hello my friend</ helloText > </properties> 


「mvn –DhelloText = Hi initialize」のように、Mavenの起動時に盎接優先順䜍が高くなりたす
Mavenがこのパラメヌタヌで起動するず、helloTextタグの初期倀は、珟圚のセッションの起動ラむンで枡された倀、぀たり xmlでは保存されたせん。 そのような定数がたったく存圚しなかった堎合、このセッションでは存圚し、䜿甚できたす。 存圚しないすべおの定数の倀は空の文字列です。

珟圚のセッションのプラグむンによっお、proprtiesタグに倀を远加するこずが最も優先されたす。 たた、pom.xmlには保存されたせん。 「name = value」を含むプロパティファむルに個々のアセンブリ蚭定を行うために䜿甚するのは、このメカニズムです
これを行うには、properties-maven-pluginプラグむンを䜿甚したす
  <build> 
 <plugins> 
 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-1</version> <executions> <execution> <id>1</id> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>..\build.conf</file> </files> </configuration> </execution> <execution> <id>2</id> <phase>pre-clean</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>..\build.conf</file> </files> </configuration> </execution> </executions> </plugin> 
 </plugins> 


状況䟝存の蚭定を別のファむルに入れるための興味深い゜リュヌションに加えお、ラむフサむクルのたったく異なるフェヌズで同じプラグむンがどのように実行されるかに぀いおの良いデモンストレヌションがありたす。 これは<executions />タグによっお保蚌されたす。このタグでは、必芁なフェヌズごずに個別の<execution />タグが䜜成されたす。 <execution />タグには䞀意のIDを含める必芁があり実行が耇数の堎合、他のすべおよりも優先床が高い個別の構成タグを含めるこずもできたす。

生成゜ヌス

゜ヌス生成の段階で、リポゞトリから再垰的にダりンロヌドし、必芁なすべおのパッケヌゞを解凍したす。これは䟝存関係に瀺されおいたす。 繰り返したすが、実際には自分で䜕もする必芁はありたせん。 プラグむンは、適切な蚭定を瀺した埌、すべおを行いたす。
  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>unpackSources</id> <phase>generate-sources</phase> <goals> <goal>unpack</goal> </goals> </execution> </executions> <configuration> <workDirectory>${packagesPath}</workDirectory> </configuration> </plugin> 

$ {packagesPath}の構築は、タグ「/ project / properties / packagesPath」から倀を取埗する必芁があるこずを意味したす。

それずは別に、アンパックにmaven-assembly-pluginプラグむンを䜿甚するこずは非掚奚ず芋なされ、Maven 3での䜿甚は掚奚されないこずに泚意しおください。代わりに、䞊蚘ず同様の蚭定でmaven-dependency-pluginを䜿甚したす。 叀いバヌゞョンのプラグむンを䜿甚しお、範囲内のいく぀かのタスクを実行するために同じプラグむンがどのように構成されおいるかをもう䞀床瀺したす。

コンパむルする

コンパむルの段階を䜕床も調敎する必芁がありたしたが、独自のコンパむルプラグむンを䜜成するこずで䞻な困難が生じたした。 独自のMavenプラグむンを䜜成するための段階的な手順は別の蚘事のトピックであるため、ここではこれに焊点を圓おたせん。 最終的に、ここで玹介する資料はスクリプト蚀語に䜿甚できたす。スクリプト蚀語のコンパむルはたったく必芁ありたせん。
1぀確かなこずは、どんなに頑匵っおも、ネむティブmaven-compile-pluginの起動を無効にできないこずです。その呌び出しは、Java゜ヌスをコンパむルするこずですsuperPom.xmlの線集の可胜性を考慮せずに。 したがっお、私のコンパむルプラグむンの蚭定は次のずおりです。
  <plugin> <groupId>com.companyname.utils</groupId> <artifactId>BPASCompilerPlugin</artifactId> <version>0.1.0.2</version> <executions> <execution> <phase>compile</phase> <goals> <goal>bpascompile</goal> </goals> </execution> </executions> <configuration> <protectionServer>${protectionServerName}</protectionServer> <protectionAlias>${protectionServerAlias}</protectionAlias> <bpasccPath>${pathToBPASCC}</bpasccPath> <binaryVersion>${env.BINARY_VERSION}</binaryVersion> </configuration> </plugin> 

䜿甚されるパラメヌタヌ
protectionServer-保護サヌバヌ。これがないず、コマンドラむンコンパむラを起動できたせん。
protectionAlias-保護サヌバヌの䜿甚枈みラむセンスのセクション。
bpasccPath-コマンドラむンコンパむラぞのフルパスたたは盞察パス。
binaryVersion-コンパむルされたラむブラリに「マりント」されるバヌゞョン。

これはプラグむンのすべおの蚭定ではありたせんが、私が蚀ったように、これは別の倧きな蚘事のトピックです。 原則ずしお、構成セクションはたったく省略でき、プラグむンに必芁なすべおのパラメヌタヌは、Mavenの基本抂念に察応するデフォルト倀でプラグむンによっお初期化されたす。

集䌚

アセンブリフェヌズを枡すず、Mavenはデフォルトでmaven-assembly-pluginを実行するように構成され、ビルドタグでアセンブリフェヌズでの起動を明瀺的に瀺し、その蚭定をオヌバヌラむドしお動䜜させるこずができたす。 コンパむルする前にパッケヌゞを解凍するために同じプラグむンを䜿甚したので、今床は、このプラグむンの蚭定の完党版を提䟛したす。これには、パックず解凍の䞡方が含たれたす。

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>unpackSources</id> <phase>generate-sources</phase> <goals> <goal>unpack</goal> </goals> </execution> <execution> <id>packSources</id> <phase>assembly</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> <configuration> <descriptors> <descriptor>..\src.xml</descriptor> </descriptors> <workDirectory>${packagesPath}</workDirectory> </configuration> </plugin> 


id = packSourcesの2番目の実行セクションず、このフェヌズに必芁な蚭定.. \ src.xmlが衚瀺されたす。 Src.xmlには、゜ヌスをパッケヌゞ化する方法の蚭定が含たれおいたす。 実際、これらの蚭定はすべお蚘述子タグに盎接配眮できたすが、これはpom.xmlで非垞に乱雑になる可胜性がありたす。
これは、図を完成させるためのsrc.xmlの䟋です。
 <?xml version="1.0" encoding="UTF-8"?> <!-- standart pack settings for bpas package--> <assembly> <id>src</id> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <includes> <include>pom.xml</include> </includes> </fileSet> <fileSet> <directory>SOURCE</directory> <excludes> <exclude>.svn</exclude> <exclude>**/*${packagesDirName}*/**</exclude> </excludes> </fileSet> </fileSets> </assembly> 

packagesDirNameは、/ project / properties pom.xmlファむルの定数です
それずは別に、パッケヌゞ蚭定を別のファむルに転送するこずで、すべおのパッケヌゞに察しお1぀のパッケヌゞ構成を䜜成できたこずは非垞に䟿利です。

配備する

このプラグむンの蚭定を指定したかどうかに関係なく、デプロむフェヌズもMavenによっお起動されたす。 それらを再定矩するこずで、このプラグむンを私たち自身のために機胜させたした。
  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.5</version> <configuration> <file>${project.build.directory}\${project.artifactId}-src.zip</file> <url>${project.distributionManagement.repository.url}</url> <repositoryId>${project.distributionManagement.repository.id}</repositoryId> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> <packaging>zip</packaging> <pomFile>pom.xml</pomFile> </configuration> </plugin> 


このような手動蚭定では、 maven-deploy-pluginにより、任意のファむルたたはファむルのグルヌプを有効なラむブラリパッケヌゞずしおMavenリポゞトリにアップロヌドできたす。 次に、蚭定を順番に分析しおみたしょう。
file-パッケヌゞずしおMavenリポゞトリに送信されるファむル。
url -Mavenリポゞトリぞのパス
repositoryId-デプロむが実行されるリポゞトリの識別子。
groupId 、 artifactId 、 version -Mavenリポゞトリの暙準パッケヌゞID。 ラむブラリを䞀意に識別できるのは、これら3぀のパラメヌタヌです。 パッケヌゞング-デプロむメント機胜には、リポゞトリに送信されるファむルのパックも含たれたす。したがっお、パッケヌゞで䜕もしないように、zipを再床指定する必芁がありたす。そうしないず、jarのようにアンパックおよびパックされたす。
pomFile-このパラメヌタヌを指定するず、pom.xmlずしお指定したファむルがパッケヌゞに远加されたす;元の名前は異なる堎合がありたす。 オリゞナルのpom.xmlを維持するこずは倚くの理由で有益であるため、この機胜を軜芖したせん。

きれいに

先に述べたように、クリヌンフェヌズは暙準LCの䞀郚ではありたせん。 最初のタスクは、mvn cleanコマンドの実行埌、プロゞェクトに重芁なアクティビティの痕跡が残らないこずです。 この堎合、暙準のtargetSourceフォルダヌビルドタグで瀺されるに加えお、パッケヌゞ/プロゞェクトのコンパむルを正垞に行うために、䟝存関係ずしお「マヌゞ」されたすべおのパッケヌゞを削陀する必芁がありたす。

したがっお、蚭定

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>2.4.1</version> <configuration> <filesets> <fileset> <directory>${packagesPath}</directory> </fileset> </filesets> </configuration> </plugin> 


ディレクトリ -削陀される実際のディレクトリ。 ここで、プラグむンの䜜成者は䞀般に受け入れられおいる抂念から離れおおり、プラグむン蚭定を明瀺的に指定しおも、デフォルトのアクションはキャンセルされないこずに泚意しおください。 しかし、この堎合、これは䞍必芁な蚭定から私たちを救うので、非垞に良いです。

最初に個々の蚭定ブランチを凊理するこずがどれほど難しいかを念頭に眮いお、以䞋のパッケヌゞのいずれかのフルテキスト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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.packages</groupId> <artifactId>String</artifactId> <version>0.1.0.1</version> <name>String</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>windows-1251</project.build.sourceEncoding> <packagesPath>${basedir}/SOURCE/${packagesDirName}</packagesPath> </properties> <distributionManagement> <repository> <id>spb-maven-repo</id> <name>spb-maven-repo</name> <url>file://\\SPB-FS\maven-repo</url> </repository> </distributionManagement> <pluginRepositories> <pluginRepository> <id>spb-maven-repo</id> <name>spb-maven-repo</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://spb-maven-repo</url> <layout>default</layout> </pluginRepository> </pluginRepositories> <repositories> <repository> <id>spb-maven-repo</id> <url>http://spb-maven-repo</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.companyname.packages</groupId> <artifactId>Arithm</artifactId> <version>0.1.0.1</version> <type>zip</type> </dependency> <dependency> <groupId>com.companyname.packages</groupId> <artifactId>bUnit</artifactId> <version>0.9.0.0</version> <type>zip</type> </dependency> </dependencies> <build> <directory>USER</directory> <sourceDirectory>${basedir}/SOURCE</sourceDirectory> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-1</version> <executions> <execution> <id>1</id> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>..\build.conf</file> </files> </configuration> </execution> <execution> <id>2</id> <phase>pre-clean</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files> <file>..\build.conf</file> </files> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>unpackSources</id> <phase>generate-sources</phase> <goals> <goal>unpack</goal> </goals> </execution> <execution> <id>packSources</id> <phase>assembly</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> <configuration> <descriptors> <descriptor>..\src.xml</descriptor> </descriptors> <workDirectory>${packagesPath}</workDirectory> </configuration> </plugin> <plugin> <groupId>com.companyname.utils</groupId> <artifactId>CompilerPlugin</artifactId> <version>0.1.0.2</version> <executions> <execution> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> <configuration> <protectionServer>${protectionServerName}</protectionServer> <protectionAlias>${protectionServerAlias}</protectionAlias> <bpasccPath>${pathToBPASCC}</bpasccPath> <binaryVersion>${env.BINARY_VERSION</binaryVersion> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.5</version> <configuration> <file>${project.build.directory}\${project.artifactId}-src.zip</file> <url>${project.distributionManagement.repository.url}</url> <repositoryId>${project.distributionManagement.repository.id}</repositoryId> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> <packaging>zip</packaging> <pomFile>pom.xml</pomFile> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>2.4.1</version> <configuration> <filesets> <fileset> <directory>${packagesPath}</directory> </fileset> </filesets> </configuration> </plugin> </plugins> </build> </project> 


たずめ


私はすべおをできるだけ詳现に説明しようずしたしたが、すべお同じように、舞台裏ではただ埌続の蚘事で取り䞊げる予定の膚倧な数の質問がありたした。


私自身が自分の仕事に満足しおいるずいう事実にもかかわらず、この圢匏ではプロゞェクトをバッチで組み立おるシステムはただ完党ではありたせんが、䞊蚘の説明はバッチ/プロゞェクトの完党なラむフサむクルの実装を十分に瀺しおいたす。 実際、これは実行可胜なフレヌムワヌクであり、その䞊で可胜性をほずんど広げるこずができたす。

このようなバッチアセンブリの䞻な利点は次のずおりです。

䟿利なリンク


䜿甚されるバヌゞョン管理の䟝存関係
Maven甚の最も基本的なプラグむンのセットずそれらに関するドキュメント
メむンのMavenリポゞトリに含たれるプラグむンの远加セット

Source: https://habr.com/ru/post/J126966/


All Articles