問題タブ [nexus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ローカル ネットワークで Sonatype nexus を使用する
私は、Java アプリケーション用の小規模なソフトウェア エンジニアリング環境 (SEE) の作成に成功しました。この環境は、他のツールの中でも Maven と nexus に基づいています。私の実際の問題は、驚くことではありませんが、ネクサスは通常、要求されたアーティファクトを中央リポジトリから取得するためにインターネットへのアクセスを必要とすることです。しかし、SEE は厳密にオフラインにする必要があり、それを変更する方法はありません (.. セキュリティ上の理由から)。
私の最初の簡単な解決策は、インターネットに接続されたマシンに nexus/maven のインストールをミラーリングし、いくつかの標準 pom を実行して、ミラーリングされた nexus にデータを取り込み、CD-ROM 経由でキャッシュをターゲット システムに移行することでした。かなり醜い。アーティファクトや新しいものの更新を取得するためにそのプロセスを適応させることをあまり楽しみにしていません. 実際、必要なライブラリをインポートし、必要なライブラリをインポートして、新しいアーティファクトを作成するだけです (nexus を使用) 代わりに、中央および他の公式のものを使用します。
同じ課題に直面し、より巧妙で効率的なアプローチを見つけた人はいますか?
編集
すべての回答に感謝します。実際の問題と現在考えている解決策について、より正確にする必要があると思います。中央に基づいて、プライベートな「中央」リポジトリを作成、入力、同期する必要があると思いますおよびインターネット上の他のリポジトリ、または正確には2つの同一のリポジトリ。1 つはインターネットに接続され、もう 1 つはローカル ネットワークに接続されています。次に、インターネットに接続されたリポジトリを「最新」に保ち、変更を DVD 経由でローカル リポジトリにコピーします。これは Nexus で表示されます。
それはうまくいくでしょうか?プライベート サーバーで「中央」のようなものをセットアップする方法に関するドキュメントはありますか?選択したアーティファクトを同期するメカニズムはありますか?
(まったく異なるアイデアを得たいと思っていたので、最初に私の考えを投稿したくありませんでした)
編集 2 - 「ベスト プラクティス」 - リクエストに応じて追加
インターネットから完全に切断された環境で Maven を使用するための「ベスト プラクティス」:
- nexus を中央サーバーにインストールして、ソフトウェア開発ワークステーションが通信するサーバーを持つようにしました (そして、それが私たち自身のアーティファクト リポジトリでした)。
- インターネットにアクセスできるワークステーションに POM ファイルをエクスポートし、そのマシンのローカル リポジトリをクリアして
dependency:go-offline( plugin ) を実行しました。これにより、必要なアーティファクトがすべてローカル リポジトリに取り込まれました。 - このローカル リポジトリを安全な環境にインポートし、すべてのプラグインを nexus に追加しました (ファイルをコピーしただけで、構造は同じです)。
これを週に 1 回、すべての POM ファイル (自動化可能) に対して行うと、非常に安定した使用可能なローカル リポジトリが得られます。
maven-2 - 変更されたアーティファクトのみをデプロイするmaven
nexus 1.4.0でmaven 2.2を使用しています
このようなpom構造があるとしましょう(対応するバージョンがあります)
childproj1 と childproj2 は、アプリケーションの異なる部分 (GUI とバックエンドなど) を表しており、GUI の新しいバージョンをリリースしなくてもバックエンドの新しいバージョンをリリースできるように、それらのバージョンを別々に保持できるようにしたいと考えています。
ここで、この構造を Nexus にデプロイするには、parentproj に移動して次のように言うと便利です。
mvn deploy -DperformRelease=true
これにより、すべてのアーティファクトが Nexus realease リポジトリにデプロイされます。これは、最初に展開したときは問題なく動作しますが、2 回目に問題が発生しました。たとえば、childproj1 を更新して、次のバージョンを作成したとします。
この状況では、Nexus は 1.0.7 バージョンに childproj2 のコピーを既に持っているため、parentproj から mvn deploy を実行できません。Nexus は、「リソース、不正なリクエスト: ID='releases' のリポジトリではアーティファクトの更新が許可されていません」と表示されます。これで問題ありません。誤って既存のバージョンを更新したくありません。
しかし、私がやりたいことは、「リリースリポジトリにまだ存在しないバージョンを持つアーティファクトのみをデプロイする」などのことをmavenに伝えることができるようにすることだと思います。
これを行う方法はありますか、それとも各プロジェクトを個別に展開する必要がありますか?
maven-2 - 「CHECKSUM FAILED」について警告されたときに Maven をデプロイに失敗させる方法
Maven デプロイでは、Maven はリポジトリから以前のメタデータを取得しようとします。破損している場合、maven は警告を発行し、ビルドを成功させますが、アーティファクトをアップロードしません。これは私のリポジトリの破損が原因でした。今後は回避するか、ビルドの失敗でより明確にしたいと考えています。
pom を変更して、この警告をエラーに変更して、すぐに確認できるようにすることはできますか?
[INFO] Retrieving previous metadata from daeng-snap
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = 'ea12f35b3bc6d88f7336891562d91985b412bf1a'; remote = '51a6f4a52ad8f3926dbb28807317a90b9cd62ec1' - RETRYING
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = 'ea12f35b3bc6d88f7336891562d91985b412bf1a'; remote = '51a6f4a52ad8f3926dbb28807317a90b9cd62ec1' - IGNORING
[INFO] Uploading repository metadata for: 'artifact com.myco.xyz'
[INFO] Uploading project information for xyz 5.0.2-20091224.163241-12
[INFO] Retrieving previous metadata from snaphots
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '00766e1a0130c3499442c06b52523960c5860f3c'; remote = 'c9bcfc92b3145688aa8ec77dcac244c70be4d0b4' - RETRYING
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '00766e1a0130c3499442c06b52523960c5860f3c'; remote = 'c9bcfc92b3145688aa8ec77dcac244c70be4d0b4' - IGNORING
[INFO] Uploading repository metadata for: 'snapshot com.myco.xyz:xyz:5.0.2-SNAPSHOT'
maven-2 - Nexus: リポジトリの削除
私のチームの他の開発者が必要とするいくつかのアーティファクトを含むホストされたスナップショット リポジトリを誤って Nexus から削除してしまいました。かなり簡単に再作成できますが、削除したリポジトリと同じ名前でリポジトリを再度追加しようとすると、[アーティファクトのアップロード] タブが表示されませんでした。キャッシュを消去して、パブリックおよびパブリック スナップショット リポジトリのインデックスを再作成しようとしましたが、役に立ちませんでした。「ローカルストレージの場所を上書きする」に代替パスを入力して、代替ストレージパスを設定しようとしましたが、同じ結果でした。別の名前でまったく新しいリポジトリを作成し、プロジェクト内のすべてのリポジトリ参照を変更する必要がありますか?
ありがとう、デビッド
m2eclipse - Nexus のスナップショットを m2eclipse 依存関係検索に表示するにはどうすればよいですか?
私は今週末、Nexus ガイドに取り組んでおり、ローカルの nexus インストールにスナップショットを発行できるように、すべての設定が完了しています。
m2eclipse にスナップショットを表示させ、それを [依存関係の追加] 検索パネルのオプションとして提供する方法がわかりません。それ、どうやったら出来るの?ありがとう!
何らかの用途がある場合、私の settings.xml は次のとおりです。
maven - nexusでレガシーリポジトリにインデックスを付けることは可能ですか?
大規模なmaven1インストールをmaven2に移行しようとしています。nexus 1.5をインストールし、レガシーホストリポジトリとそのm2仮想ビューを作成しました。Maven 2ビルドスクリプトは、問題なくアーティファクトにアクセスできます。動作していないのは、レガシーリポジトリのnexus-indexだけです。現在、レガシーホストリポジトリには検索に含めるオプションがなく、仮想m2ビューもインデックスに含まれていないようです。
古いレガシーMaven1リポジトリをnexusで検索できるようにする方法はありますか?
java - Maven 2 では、すべてのミラーを指定することは可能ですが、直接リポジトリへのフェイルオーバーは可能ですか?
次のような Maven ミラーを設定することの魅力の一部を理解しています。
...ドキュメントには次のように記載されています。
すべてのリポジトリ要求をミラーリングすることで、Maven に単一のリポジトリを使用させることができます。
しかし、これは、*ミラーをセットアップすることによって、各ワークステーションが強制的にミラーを通過しなければならないことを示しているのでしょうか?
Nexus が依存関係やプラグインを解決できない場合に備えて、各ワークステーションをフェールオーバーし、既知のパブリック リポジトリに直接接続するようにしたいためです。(完全な世界では、各開発者は、必要に応じて追加のプロキシ リポジトリを追加するために必要なアクセス権を持っています。ただし、そのアクセスが利用できない場合や、Nexus サーバーがダウンする場合、Java ヒープ エラーが発生する場合があります。)
Maven 2 では、この「ミラーですが、先に進んでパブリック リポジトリに直接接続する」フェイルオーバー構成は可能ですか? それはMaven 3になりますか?
maven-2 - s3のスプリングソースMavenリポジトリをプロキシするためにネクサスを取得するにはどうすればよいですか?
Springsourceリポジトリをプロキシするようにnexus1.5.0を設定していますが、機能していません。リポジトリはs3にあり、nexusはそれを処理する方法を理解していないようです。
正しいパターンは何ですか?
これが私が必要だと言われたリポジトリですが、それらの中にあるMavenパスにアクセスできません
http://repository.springsource.com/maven/bundles/release http://repository.springsource.com/maven/bundles/external
これらをローカルにミラーリングする必要がありますか?
maven-2 - Mavenリポジトリはサードパーティのリポジトリをプロキシしますが、これはトラフィックを生成しますか?
Sonatype Nexus Maven RepositoryJBOSSやScala-Repoなどのいくつかのサードパーティリポジトリのプロキシであるパブリックがあります。
プロキシされたリポジトリの1つ(たとえばJBOSS)にあるアーティファクトをダウンロードすると、リポジトリを実行しているサーバーにトラフィックが生成されますか?
eclipse - m2eclipse の依存関係の問題
m2eclipse と Nexus に問題があります。通常、Eclipse で新しい Maven プロジェクトを作成するときは、Nexus Indexer から maven-archetype-quickstart のような Archetype を選択できます。残念ながら、Nexus Indexer には何も表示されません。しかし、これに関する最悪の部分は、「依存関係の追加」メニューが機能しないことです。(理解を深めるために:「依存関係」タブをクリックすると、通常はボタンをクリックしてgroupIdまたはartifactIdを入力できます。それが私が話しているメニューです。たとえば「junit」と入力すると、検索結果は表示されません。) この問題を知っている人はいますか? どうすれば修正できますか?
助けてくれてありがとう。