Lors de l'ajout de dépendances à mon projet, je ne suis jamais sûr du préfixe que je devrais leur donner, par exemple "classpath"
ou"compile".
Par exemple, mes dépendances ci-dessous doivent-elles être le moment de la compilation ou le chemin de classe?
Aussi, devrait-il être dans mes applications build.gradle ou dans le module build.gradle spécifique?
Build.gradle actuel (au niveau de l'application):
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'org.hibernate:hibernate-core:5.0.5.Final'
compile 'mysql:mysql-connector-java:5.1.38'
}
java
gradle
dependencies
java123999
la source
la source
classpath
n'est pas une étendue de dépendance valide.compileOnly
dépendances vontproject.configurations.compileClasspath
mais pas versproject.configurations.compile
, comme mentionné ici github.com/iboyko/gradle-plugins/issues/5Réponses:
Je vais deviner que vous faites référence
compile
etclasspath
dans ledependencies {}
bloc. Si tel est le cas, ce sont des configurations de dépendances .La
compile
configuration est créée par le plugin Java. Laclasspath
configuration est généralement vue dans lebuildSrc {}
bloc où il faut déclarer les dépendances pour le build.gradle lui-même (pour les plugins, peut-être).la source
dependencies {}
bloc peut être déclaré à la fois à l'intérieurbuildscript {}
et à l'extérieur de celui-ci. À l'intérieur, vous utilisez laclasspath
configuration des dépendances nécessaires pour compiler le script de construction lui-même.Si buildscript lui-même a besoin de quelque chose pour s'exécuter, utilisez classpath .
Si votre projet a besoin de quelque chose pour s'exécuter, utilisez compile .
Le
buildscript{}
bloc est pour le build.gradle lui-même.Pour la construction multi-projets, le fichier de construction de niveau supérieur est pour le projet racine, le fichier de construction spécifique est pour le sous-projet (module).
Fichier de construction de niveau supérieur dans lequel vous pouvez ajouter des options de configuration communes à tous les sous-projets / modules.
Ne placez pas vos dépendances d'application dans le fichier de construction de niveau supérieur, elles appartiennent aux fichiers build.gradle du module individuel
la source
compile
et non unclasspath
?Si je comprends bien, vous confondez le
Project.dependencies
bloc de script avec leProject.buildscript.dependencies
bloc de script (tout comme je l'ai fait lorsque j'ai atteint cette question).Je vais essayer de répondre avec ce que j'ai trouvé.
Je pense que vous devriez déjà être familier avec le
Project.dependencies
bloc de script. Dans ce bloc, nous déclarons les dépendances requises par notre code source. Il existe plusieurs façons de déclarer une dépendance dont nous avons besoin pour le projet. Voir Didacticiel Gradle: types de dépendances . Je ne mentionnerai que la partie la plus pertinente à ce problème:compile 'org.hibernate:hibernate-core:5.0.5.Final'
est une déclaration de dépendance de module. La configuration de compilation (qui est maintenant obsolète par la configuration de l'implémentation.) Est simplement un mot-clé pourImplementation only dependencies.
Ce n'est pas un mot-clé décrivant de quel type de dépendance il s'agit (par type ici, je suis les trois types définis dans le tutoriel, à savoir le module, fichier et projet.)Dans le didacticiel Gradle: organiser la logique de construction, il est dit:
J'espère que les choses deviennent claires pour vous maintenant.
Avec
classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
nous définissons laclasspath
méthode aveccom.android.tools.build:gradle:${Versions.android_gradle_plugin}
laquelle une dépendance de module est utilisée par le script de construction lui-même plutôt que par la source de votre projet.D'un autre côté,
compile 'org.hibernate:hibernate-core:5.0.5.Final'
nous déclarons une dépendance de module requise pour votre projet avec la configuration de compilation .tl; dr: Le
classpath
,compile
etimplementation
sont tous les mots clés qui peuvent être utilisés contre les dépendances dans des circonstances différentes. Le premier est utilisé lorsque vous souhaitez transmettre une dépendance au script de construction, et le second est l'une des configurations que vous voudrez peut-être déclarer.la source
'org.projectlombok:lombok:1.18.4'
n'a pas d'classpath
association car il s'agit d'un fichier jar qui n'est nécessaire qu'au moment de la compilationjavac
, mais non nécessaire à l'java
exécution. Par conséquent, une utilisation correcte est une interaction des mots-clés définis et de l'artefact. Cela signifie qu'il faut des connaissances a priori.