私の同僚と私は最近、私たちの職場で提案された計画について議論を始めました。 JavaコードベースをMavenで管理および構築されたコードベースに移行しました。次に、HudsonやSonarなどと統合したいと思います。この理由テスターに新しい実験的なビルドを提供するための「ゼロクリック」ビルドステップを提供し、アプリケーションをサーバーに簡単にデプロイできるようにし、Sonarなどのツールがコードに関する必要なメトリックを提供することです。カバレッジ、Javadoc、パッケージの依存関係など。
彼は、2つの新しいフレームワークに慣れるまでのオーバーヘッドは許容できないものであり、ドキュメントを2倍にして、展開用の独自のスクリプトを作成する必要があると考えています。以前の開発者が被った技術的負債を返済するために積極的な書き直しを計画しているので(JavaのSerializableインターフェースをファイルストレージメカニズムとして不必要に使用し、予想通りお尻に噛み付いた)、彼は私たちが進むにつれて文書化できると主張します。とにかく、プロセスで大量のコードを変更することになります。
Sonar(またはお気に入りの同様のツールに入力)が提供する正確なメトリックがあると、一般的なメンテナンスは言うまでもなく、リファクタリングの取り組みを開始するのに適した場所になると私は主張します-結局のところ、どのクラスが最も文書化されていないかを知っています。それが単なる出発点である場合は、パンツの座席で推測するよりも優れています。
私は間違っていて、実際に必要な以上のオーバーヘッドを導入しようとしていますか?もう少し背景:私たちの会社の卒業生は現在海軍の研究所で働いており、特にこれらの2つのツールを使用して大きな成功を収めたツールとして提案しました。私の同僚と私は以前にも友好的な意見の不一致を共有していました。彼は「すべての人のためのCLI、空き時間にGentooをコンパイルし、Gitを使用する」というよりも、「直感的なGUIを提供し、 XNAおよびSVN "タイプで問題ないため、ここには間違いなくsomeカルチャの衝突の要素があります。
何が最もいつ何を買うかを考えてください。
私の推測では、ビルドサーバーにHudsonを使用し、「品質メトリックス」を提供するためにSonarを使用するとします。
ビルドサーバーは非常に重要です。ビルドサーバーでビルドおよびテストされたバイナリを、ソース管理システムのソースから直接送信するだけで済みます。内部のハウスキーピングでは、ビルド番号を家から送信されるバイナリに埋め込む必要があります。これの価値は単に過大評価することはできません!
「品質測定基準」はいいですが、あなたは必要今ですか?ビルドエンジンほど重要ではないと思うので、同僚がもっと準備ができるまで延期します。
Hudsonを使用してMavenビルドを実行するのは非常に簡単です。だからそれをして、後でソナーを保存してください。
RedmベースのLinuxシステムで使用できるRPMがあり、yumでの自動アップグレードを提供していることに注意してください。
そして、記録のために:これらの種類のもののために製品を使用してください。実行not自分でビルドします。特に、Mavenビルドの場合はそうではありません。
継続的ビルドツールの設定は難しくありません。クルーズコントロールを使えばとても簡単です。私の理解では、ハドソンはさらに簡単です。すでにMavenを使用したワンステップビルドを使用している場合は、1時間に及ぶ退屈な会議が終了するのを待っている間に、ラップトップでほとんど実行できる可能性があります。 Mavenに心を包むほど難しくはありません。必要に応じて、自分の開発ボックスでそれを実行し、どれくらいの時間がかかったかを伝えます。ほとんどの組織では、何かを成し遂げることは、チームの他のメンバーのために実装または学習することがどれほど難しいかについての理論を打ち負かします。
Mavenのデプロイ目標を設定すると、ワンクリックでのデプロイにかなり近いものになるでしょう。それは本当に、本当にいいです。それはあなたをより正気にするでしょう。私は(私が、または非常に優れたビルドエンジニアが)非常に優れた場所で働いてきました。作業、テスト、修正がはるかに簡単になり、変更が少なくなることを恐れます。それは組織にとって健全です。