タグ付けされた質問 「maven」

Mavenは、プラグインベースのソフトウェアプロジェクト管理ツールであり、その主な機能は、ソフトウェアビルドの自動化、依存関係管理、レポートとドキュメントの生成です。

6
Gitリポジトリ内の単一または複数のプロジェクトを選択しますか?
gitほとんどのプロジェクトをモジュール化した環境では、リポジトリごとに1つのプロジェクト、またはリポジトリ設計の問題ごとに複数のプロジェクトに直面しています。モジュール化されたプロジェクトを考えてみましょう。 myProject/ +-- gui +-- core +-- api +-- implA +-- implB 現在、リポジトリごとに1つのプロジェクトがあります。それは自由を与えます release 個々のコンポーネント tag 個々のコンポーネント しかしbranch、多くの場合、分岐にapiはの同等の分岐が必要coreであり、おそらく他のコンポーネントも必要であるため、コンポーネントにとっても面倒です。 releaseコンポーネントを個別にしたい場合でも、リポジトリ設計ごとに複数のプロジェクトを利用することで、同様の柔軟性を得ることができます。 どのような経験があり、これらの問題にどのように/なぜ対処しましたか?

1
大きなプロジェクトを分割してマルチモジュールMavenプロジェクトを作成する
私は依存関係管理にMavenを使用しているSpring-MVCアプリケーションに取り組んでいます。プロジェクトが大きいので、プロジェクトをいくつかの部分に分割することを考えています。いくつか疑問がありましたが、ここで答えが得られることを願っています。 現在、ROOT.warサーバー上のApache Tomcatのように単一のWARファイルをデプロイしています。プロジェクトが大きいので、通知とメール、サードパーティサービス、PUSH(Cometd)、REST APIなどのようなwebappの部分があります。現在、それらはすべてクラブであり、互いに依存しています。たとえば、通知はユーザーに合わせて調整されるため、Notificationオブジェクトもオブジェクトに依存しPersonます。 大きなプロジェクトを分割する主な目的は、バグ修正、機能の追加、テストなどのために個々のモジュールで作業できるようにすることです。そして、満足したら、このモジュールのみをアプリケーション全体ではなくサーバー上で置き換えることができます。これは可能ですか? 前述したように、オブジェクト間に依存関係とマッピングがあります。これらは異なるサブモジュール間でどのように管理されますか、またはインポートステートメントだけが他のプロジェクトを含むように変更されますか? 私が言ったように、意図は個々のモジュールに取り組み、それらを展開できるようにすることです(できればホット)。現在、として単一のWARファイルのみがありますROOT.war。分割により複数のwarファイルが作成され、URLで参照されますdomain-name.com/module_name/some_mappingか? 現在ドキュメントを確認していますが、これはMavenが提供するマルチモジュールで達成したい主な目的であり、これが実現可能かどうかを知りたいと思っています。さらに情報が必要な場合は、お知らせください。 現在、私は次のように春から親POMを使用しています: <parent> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>1.1.3.RELEASE</version> <relativePath /> </parent>

9
IDEのワンクリックビルドの代わりに別のビルドツールを使用するように、一人の開発者を説得する
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私の長年のJavaプログラミング、最近ではScalaで、Ant、Maven、Gradle、またはJava用のビルドツールを使用したことがありません。私が働いていたすべての場所に、そのすべてを処理するビルドマネージャーがいました-開発と単体テストのためにIDEでローカルにコンパイルし、ソースコードをチェックインし、必要なことをしたビルドマネージャーに通知しました共有環境用に全員のファイルをコンパイルします。 契約の合間に、私は自分で資金を提供するプロジェクトに取り組んでおり、実際にお金を稼ぐのに十分なレベルに達しつつあります。私も潜在的な投資家を揃えており、今後数週間以内にベータ版を見せることを計画しています。 しかし、ずっとIDEのビルドボタンをクリックするだけで、Jarファイルが作成され、正常に機能します。もちろん、従来の知識では、私は自分でAnt / Maven / Gradleスクリプトを作成し、IDEの代わりにそれを使用する必要があると示唆していますが、私の状況での具体的な利点は何ですか(単独で作業)? 私はこれらのビルドツールの使用方法について読んでいますが、IDEがワンクリックで行うこと(IDEで生成されたものプロジェクトのAnt XMLは700行を超えています)。エラーが発生しやすく、時間がかかり、私の状況では不必要に見えます。学習曲線は言うまでもありません。学習曲線は、他のすべての作業から時間を奪って、製品を人々に見せるために準備します。

1
Mavenに似たHaskellビルドおよびアーティファクト環境
私は以前からJava開発者でしたが、最近、Haskellチームに参加しました。Javaの世界では、複数のチームが取り組んでいる大規模なプロジェクトがある場合、Mavenなどのアーティファクトサーバーを使用して開発を容易にし、スピードアップするのが一般的なアプローチです。Ant、Maven、Gradleなどの多数のビルドツールを使用してプロジェクトをビルドし、jarファイルをアーティファクトサーバーにアップロードして、チームの残りのメンバーが簡単に使用できます。したがって、プロジェクトをより小さなサブプロジェクトに分割することにより、ビルド時間も大幅に短縮されます。 Haskell側ではcabal、プロジェクトのビルドに使用しています。このプロジェクトは、最適化なしでビルドするのに約10〜15分かかります。コンパイラーの最適化がオンになっている場合、数時間かかりますが、これは苦痛です。 ここでJavaで行うのと同じことをどのように行うことができるのでしょうか。パッケージ(ライブラリ)のバイナリをコンパイルしてアーティファクトサーバーにアップロードし、ビルド時にビルド済みのバイナリを使用する簡単な方法はありますか?Haskellは(Javaのバイトコードではなく)マシンコードを生成するため、互換性の問題があるかもしれませんが、アーティファクトサーバーに格納されているアーキテクチャ/ OSごとに異なるバイナリを使用できる可能性があります。

1
サードパーティのMaven依存関係のライセンスを含める方法
私は、Javaプロジェクト用に配布可能なバイナリを作成しています。次の2つの方法でリリースしています。 メイヴン・セントラル Googleコードで配布可能なzip形式 私のプロジェクトは、Apache 2.0ライセンスの下でライセンスされています。私は少数のサードパーティを使用していますが、そのうちの1つはMITライセンスです。ライセンスの次のテキストに基づいて、プロジェクトのユーザーにライセンスの内容を認識させることが私の義務だと思います。 上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含まれるものとします。 私の情報源と配布物内でこれをどのように参照するのが最善ですか?私は現在考えています: 私のソースファイルは何も参照する必要はありません。それらには、Apache 2.0の定型的な通知が含まれています。 Apache 2.0ライセンステキストを含むLICENSE.txtファイルをプロジェクトのルートに追加します。 zip形式の配布可能ファイルについては、コンポーネントがMITライセンスされていることを示すものも追加する必要があります。おそらくNOTICEファイルですか? Maven Centralディストリビューションでは、アーティファクトが依存関係を宣言するだけで、実際にはそれらを含めないため、何もする必要はありません。 これは有効な計画のように思えますか?もしそうなら、誰でもポイント3を達成する方法をアドバイスできます。

2
MavenのGitリポジトリを構成する最良の方法
Gitでプロジェクトを構成する方法について、いくつかのアドバイスが必要です。Javaを使用し、Mavenはビルドツールです。Mavenは、最終的にすべてのプロジェクトに共通の祖先があると想定しています。Mavenは、Apache Foundationがプロジェクトをセットアップする方法が正確にセットアップされていない場合、本当のドラマクイーンになることもあります(リリースプラグインを使用している人は、おそらく私が話していることを知っています)。 プラグインのバージョンとビルド構成(リポジトリ構成、ビルドするアーティファクト、命名規則、プラグインバージョンなど)を制御する最上位の親pomが必要です。Mavenは、すべてのITプロジェクトをそのメインプロジェクトのサブフォルダーに入れたいと考えています。これは、組織の1つの大規模なGitリポジトリを意味します。 これは非常に騒がしい環境になります。関連のないプロジェクトに取り組んでいる2つのチームがある場合、それらは常に他のチームからマージをプルする必要があります。理想的には、プロジェクトごとに1つのリポジトリが必要です。 しかし、そのような種類は、サブプロジェクトがサブフォルダーであることを要求する Mavenの非常に階層的なモデルと衝突します。 人々がこれら2つのモデルをどのように調整したかについて、いくつかのアドバイスが必要です。

1
Javaアプリケーション構造:水平分割と垂直分割
大きなJavaアプリケーションのプロジェクト構造(Maven / Eclipseを使用)の開始について少し議論します。 オプション1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) オプション2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are functional areas of the system) オプション2を使用すると、明らかにMavenプロジェクト/モジュールが大幅に増え、データベースを生成するクラスが複数のプロジェクトに分散されます。誰もが各アプローチの長所/短所をアドバイスできますか?

5
AntはJavaビルドの「メインストリーム」のままですか?
開発者IDEでコンパイルされたクラスを単純化するバッチコマンドファイル(windows .bat)を、より包括的なAntビルド(つまり、CVSから取得、コンパイル、jar、アーカイブ、電子メールなど)でゆっくりと置き換えています。 Antで多くの時間を学習(および問題のデバッグ)に費やしてきたので、これらのタスクに使用するのが最も快適です。しかし、Antは、私が最初に学習を始めたときと同じように広く使用されているのか、それとも「世界は新しいものに(そしておそらくよりスマートに)変わったのか」と疑問に思います。(たとえば、Mavenビルドマテリアルが配布されるようになりましたが、これは使用したことがありません。) この質問の実際の重要な点は、新しい開発者にAntを学ぶように勧めるかどうか、またはビルドのために他の何かを学ぶべきかどうかです。 私は決してトレンドを熟知しているわけではないので、他のJava開発者から彼らが最高のビルドツールだと思うこと、そして新しい開発者が学ばなければならないと思うことを聞くのは素晴らしいことです。
14 java  training  maven  builds  ant 

2
私の小さなソフトウェアライブラリは他のライブラリの使用を避けるべきですか?
わずかなクラスとメソッドのみを提供する小さなJavaライブラリをリリースしました。Mavenを使用してプロジェクトを構築したので、すぐにいくつかのサードパーティライブラリを使用して、特に次の目標を達成しました。 commons-lang3(いくつかの一般的なJavaのもの用) slf4j-api(ロギング用) commons-io(ほんの少しのファイル用-文字通り一度ファイルを読む、と思う) 自分のライブラリが他人の目に肥大化しているように見せたくない。フットプリントを最小限に抑えるために、これらのライブラリへの依存を削除する必要がありますか?将来さらに多くのライブラリを使用することを検討する際に、どのタイプのライブラリを避けるのが最善かについてアドバイスはありますか
13 java  libraries  maven 

5
Mavenを使用したJava EEプロジェクトの作成
Eclipseを使用してJava EE Webアプリを1年ほど開発しています。私の雇用主はMavenを使用していませんが、それについて詳しく読むほど、Maven + Hudsonが私たちにとって非常に有益であると確信しています。ただし、まず、概念実証を作成できるように、空き時間にこれらのテクノロジに慣れる必要があります。 現在、私はまだMavenの初心者です。MavenでJava EE Webアプリを作成するためのベストプラクティスのセットはありますか?たとえば、基本的なアーキタイプを使用してプロジェクトを作成し、サーブレットコンテナ、EJB、EclipseLinkなどのPOMに依存関係を追加することにより、必要なすべてのJARを追加できます。それを行う方法。このトピックについて提供できるガイダンスをいただければ幸いです。
13 java-ee  maven 

2
Javaプロジェクトの分離
大規模なJavaプロジェクトがあり、ビルドサイクルにmavenを使用しています。この1つのプロジェクトは広く使用されています-他のプロジェクト、さまざまなアプリケーション、その中に含まれているものと他の場所にあるもの...正直に言うと、それはちょっとした混乱です目的)、そして私はそれを少しきれいにしたいと思います。また、完全にはテストされていません(適切なユニットおよび統合テストなしで多くのビットが追加されています)。実行に時間がかかるか、実際に合格しないテストがいくつかあります...(uh-oh)-そうテストはMavenビルドサイクルでオフに切り替えられます(繰り返しますが)。 「最終」サブプロジェクト(または複数のサブプロジェクト)が必要とするさまざまなサブプロジェクトを選択できるように、この大きなプロジェクトを小さな特定のプロジェクトに分割することを考えています。 私の考えは次のとおりです。 大きなプロジェクトをさまざまなサブプロジェクトに分けると、各プロジェクトの責任が明確になります。 サブプロジェクトに分けることで、各サブプロジェクトのテストを個別にクリーンアップし、Mavenビルドサイクルでそのサブプロジェクトのテストを有効にできます。 これがビルド時間に与える影響について少し懸念しています。 大きなプロジェクトに構造を課す(つまり、小さなサブプロジェクトに入れる)と、コンパイラの速度が低下しますか? また、IDEでの編集時間にどのような影響があるかも少し懸念しています(主にIntellijを使用しています)。Intellijは依存関係ツリーを介して各プロジェクトを順番にビルドするようです。つまり、CがBに依存し、Aに依存し、Aを変更すると、Aがコンパイルしない限りBをビルドしようとしません。おそらくそれは有利ですが、たとえば、BおよびCで広く使用されているAのインターフェイスを変更すると、その変更によるすべてのエラーを修正するのに時間がかかることがわかりました... もう1つの質問は、ファクトリクラスの使用方法です。プロジェクトの一部の側面は外部jarに依存しています。時折(ありがたいことに頻繁に)これらは更新され、移行する必要があります。外部コードの正しいバージョンを指すFactoryクラスを使用してこれを処理する傾向があります(したがって、コードベース全体のすべての実装を変更する必要はありません)。 現時点ではこれはすべて大規模なプロジェクトですが、サブプロジェクトに切り替えることで、新しい外部コードを実装するための新しいプロジェクトを開発し、サブプロジェクトが完全に機能し、テストされていることを確認できます。次に、ユーザープロジェクトの依存関係/ファクトリクラスを切り替えます。ただし、大規模なプロジェクト全体でインターフェイスを広範囲に使用するため、これはより複雑になります。例えば サブプロジェクトA-インターフェースを含む サブプロジェクトB-インターフェースと古い外部jarはAに依存 サブプロジェクトC-B(およびAおよび古い外部jar)に依存し、Bのインターフェース実装を使用するFactoryクラスを含む Bの外部jarを変更する必要がある場合、次のことができます。 サブプロジェクトB_iiの作成-再びAに依存し、新しい外部jar 完全に機能したら、Cの依存関係をB_iiに追加し、インターフェイスの新しい実装を使用するようにFactoryクラスを変更できます。 すべてが機能したら、Cの元のBへの依存関係を削除し、必要に応じてサブプロジェクトBを削除できます。 これは賢明な方法ですか? だから、一般的に、私の質問は次のとおりです。 大規模なプロジェクトを解体した経験はありますか?共有したいと思うヒント/トリックはありますか? これは開発およびビルド時間にどのような影響を与えましたか? このようなプロジェクトのこのような分裂を構造化する上で、どのようなアドバイスを提供できますか?

2
git、maven、およびjenkins-バージョン管理、開発、およびリリースビルドのワークフロー
git、maven、およびjenkinsを使用して次のことを行うための好ましい方法は何ですか: 「dev」ブランチと「release」ブランチを維持したいアプリケーションを開発しています。ジェンキンスに両方を構築してほしい。リリースアーティファクトのバージョンが1.5.2になり、開発ビルドが0.0.1-SNAPSHOTになるだけになる可能性があります。2つの異なるpom.xmlファイルを持つ必要はありません。 プロファイルを調べましたが、アーティファクトのバージョンを変更できないようです。私が見た1つの方法は、テストビルドに「修飾子」を追加することです。もちろん、ファイルの名前を変更することもできます。これは、アプリがスタンドアロンのものであるため、これに関する実際のアーティファクト情報は重要ではないからです。 これを行うための好ましい方法は何ですか?または、これをどのように行いますか?

1
IntelliJとMavenコンパイル
Hibernate jarを必要とするプロジェクトがあります。 それらをpom.xmlの依存関係として追加すると、Mavenはプロジェクトを適切にコンパイルします。 ただし、IDEでは、Hibernate APIへのすべての注釈と呼び出しが未解決(赤)としてマークされます。 IntelliJでそれらを解決できるようにするにはどうすればよいですか? Build ProjectをクリックしたときにMavenを使用する方法はありますか?(Ctrl + F9) また、IntelliJ内のファセットの概念と混同しています。それらが必要ですか、永続化アシスタントを有効にするJPAファセットなどとしましょう...またはMavenに処理を任せるオプションがありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.