tl;dr; build.gradle に依存関係を追加すると問題なくダウンロードされますが、アイデアではクラスパス/外部ライブラリには追加されません。
こんにちは、みんな
JavaでWebアプリケーションを開発するのは初めてで、mvnrepository.comのいくつかのjarに依存しようとしています.依存関係が外部ライブラリにダウンロードされてクラスパスに追加されるのは、プロジェクトをgradleプロジェクトとしてインポートするときだけです.で、プロジェクトを起動して実行し、新しい依存関係を追加するたびに、プロジェクト全体を intellij に再度インポートする必要があります。
私のbuild.gradleファイルは次のようになります:
group 'project_name'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/com.google.inject/guice
compile group: 'com.google.inject', name: 'guice', version: '3.0'
// https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-core
compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '9.0.0.M9'
// https://mvnrepository.com/artifact/com.sun.jersey/jersey-core
compile group: 'com.sun.jersey', name: 'jersey-core', version: '1.19.1'
// https://mvnrepository.com/artifact/com.sun.jersey/jersey-json
compile group: 'com.sun.jersey', name: 'jersey-json', version: '1.19.1'
// https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client
compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.23.2'
// https://mvnrepository.com/artifact/com.sun.jersey/jersey-servlet
compile group: 'com.sun.jersey', name: 'jersey-servlet', version: '1.19.1'
// https://mvnrepository.com/artifact/com.sun.jersey/jersey-server
compile group: 'com.sun.jersey', name: 'jersey-server', version: '1.19.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
task wrapper(type: Wrapper) {
gradleVersion = '2.5'
}
リストに新しい依存関係を追加し、./gradlew build を実行すると、 --refresh-dependencies オプションの有無にかかわらず、新しい依存関係がダウンロードされますが、ダウンロードしたファイルが外部ライブラリ/クラスパスに追加されないので、それらをJavaコードにインポートできません。私はこれに似た質問を見ました。彼らは実行するような回答を受け入れました:
./gradlew idea
私の場合、これはまったく役に立ちません。ディレクトリに自動生成されたファイルをいくつか追加するだけで、動作に明確な違いはありません。
その後、彼らはプロジェクトをgradleプロジェクトとしてインポートすることも受け入れました。これは私が行ったものですが、新しい依存関係を追加することはできません。
参考までに、gradle 2.5 ラッパーと IDEA community 16.2 を使用しています。