回答:
Mavenをオフラインモードで実行できますmvn -o install
。もちろん、ローカルリポジトリで利用できないアーティファクトは失敗します。Mavenは分散リポジトリーを前提としていませんが、確実に物事をよりシームレスにします。このため、多くのショップでは、中央のリポジトリと段階的に同期される内部ミラーを使用しています。
さらに、をmvn dependency:go-offline
使用して、オフラインで作業を開始する前に、すべての依存関係がローカルにインストールされていることを確認できます。
LANでインターネットにアクセスできるPCがある場合は、ローカルのMavenリポジトリーをインストールする必要があります。
Artifactory Open Sourceをお勧めします。これは私たちの組織で使用しているもので、セットアップは本当に簡単です。
Artifactoryは、ビルドツール(Maven、Ant、Ivy、Gradleなど)と外部の世界の間のプロキシとして機能します。
リモートのアーティファクトをキャッシュするので、何度も何度もダウンロードする必要はありません。
内部のアーティファクトに対する不要な(場合によってはセキュリティが重要な)外部リクエストをブロックし、アーティファクトをどこに、誰がデプロイするかを制御します。
Artifactoryをセットアップしたらsettings.xml
、開発マシンでMavenを変更するだけです。
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
開発マシンでのインターネットアクセスに問題があり、一部のアーティファクトが破損したファイルをダウンロードしたか、まったくダウンロードしなかったため、このソリューションを使用しました。それ以来問題はありませんでした。
これには2つのオプションがあります。
1.)settings.xmlに変更を加え、これを最初のタグに追加します
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.)オフラインコマンドに-oタグを使用します。
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Mavenには、ローカルリポジトリの依存関係が必要です。それらを取得する最も簡単な方法は、インターネットアクセスを使用することです(または、ここで提供される他のソリューションを使用するのはより困難です)。
したがって、一時的にインターネットにアクセスできると想定すると、maven-dependency-pluginとそのdependency:go-offlineゴールを使用して、オフラインにする準備をすることができます。これにより、プロジェクトのすべての依存関係がローカルリポジトリにダウンロードされます(もちろん、依存関係/プラグインの変更には、新しいインターネット/中央リポジトリへのアクセスが必要です)。
dependency:go-offline
つまり、すべてをキャッシュしていなかったため、残念ながらうまくいきませんでした。POMファイルやその他のファイルには、依存関係が暗黙的に記述されています。
回避策は、ファイル内またはパラメータを使用して実行することにより、ローカルリポジトリの場所を指定することです。最初のプロジェクトのビルド後、必要なすべてのアーティファクトがキャッシュされ、Mavenビルドをオフラインモードで実行しながら、同じ方法でリポジトリの場所を参照できます()。settings.xml
<localRepository>...</localRepository>
mvn
-Dmaven.repo.local=...
mvn -o ...
オフラインにする前に、すべてがローカルリポジトリにあることを確認する必要があります。これはオフラインでの作業中に必要です。作業する予定のプロジェクト/ pomに対して「mvn dependency:go-offline」を実行すると、これを達成するための労力が軽減されます。
しかし、dependency:go-offlineは「ベアビルド」プラグインのみをダウンロードするため、通常はそれだけではありません(go-offline / resolve-pluginsはすべてのプラグインの依存関係を解決しません)。したがって、デプロイ/テスト/サイトプラグイン(およびおそらく他のプラグイン)とその依存関係をリポジトリにダウンロードする方法を見つける必要があります。
さらに、dependency:go-offlineはpomのアーティファクト自体をダウンロードしないので、必要に応じてそれをdependency:copyする必要があります。
ときどき-MaDaが書いたように-オフラインで何が必要かわからないため、「十分な」リポジトリを作成することはほとんど不可能です。
とにかく、適切に入力されたリポジトリがある場合、オフラインにするためには、Mavenのsettings.xmlに「<offline> true </ offline>」を追加するだけです。
オフラインのときは、リポジトリの入力に使用したMavenプロファイル(id)を変更しないでください。Mavenは、プロファイルIDにバインドされた「アイデンティティ」を使用して、ダウンロードされたアーティファクトをメタデータで認識します。
IntelliJを使用している場合は、[ 設定] -> [ ビルド、実行、デプロイメント] -> [ ビルドツール] -> [ Maven]に移動し、[ オフラインで作業]をオンまたはオフにします。
これはうまくいきますか?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
これをプラグインリポジトリに追加し、リポジトリのどこにでもURLを指定することを忘れないでください。
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
そうでない場合は、マシン上でローカルサーバー(apacheなど)を実行する必要がある場合があります。
(ソース:jfrog.com)
または
Sonatype Nexus http://www.sonatype.org/nexus/またはJFrog Artifactory https://www.jfrog.com/artifactory/などのMavenリポジトリサーバーを使用するだけです。
1人の開発者がプロジェクトをビルドした後、次の開発者がビルドするか、Jenkins CIはインターネットアクセスを必要としません。
Mavenリポジトリー・サーバーは、Maven Central(またはより多くの必要なパブリック・リポジトリー)にアクセスするように構成されたプロキシーを持つこともでき、リモート・リポジトリー内の成果物のリストを循環させることができます。
私の経験では、-oオプションが適切に機能せず、go-offlineの目標が完全なオフラインビルドを許可するには十分ではないことが示されています。
私が検証できるソリューションには--legacy-local-repository
、-o
(オフライン)オプションではなくmavenオプションの使用と、ディストリビューションリポジトリの代わりにローカルリポジトリの使用が含まれます
さらにmaven-metadata-maven2_central.xml
、local-repoのすべてのファイルをmaven-metadata.xml
mavenが予期する形式にコピーする必要がありました。
ここで見つけた解決策を参照してください。
質問に直接答える:インターネット接続は必要ありませんが、LANまたはローカルディスク上のリポジトリへのアクセス(ここに投稿した他の人からのヒントを使用)。
プロジェクトが成熟したフェーズにない場合、つまりPOMが頻繁に変更される場合は、リポジトリも頻繁に更新する必要があるため、オフラインモードは非常に非実用的です。必要なものがすべて含まれているリポジトリのコピーを入手できない場合を除いて、どのようにして知っていますか?通常、リポジトリは最初から開始し、開発中に(別のリポジトリに接続されているコンピューターで)徐々に複製されます。repo1.maven.orgパブリックリポジトリのコピーの重量は数百ギガバイトであるため、ブルートフォースもお勧めしません。
新しいプラグインは次の欠点を修正するために登場しましたmvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
それをpomに追加して、を実行しmvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
ます。すべての動的依存関係をセットアップすると、(バージョンを更新するまで)mavenは何もダウンロードしようとしません。