40 votes

Utiliser SBT pour construire un projet Pure Java

Historiquement, j'ai utilisé Ant+Ivy ou Maven pour construire mes projets Java. Je cherche maintenant des solutions non basées sur XML.

Gradle peut compiler, jar et publier mon projet avec peu de problèmes.

Puis-je faire la même chose avec SBT ? Si oui, pouvez-vous fournir un exemple simple d'utilisation de sbt pour construire un projet uniquement en java.

36voto

Hiery Nomus Points 4157

Oui, c'est tout à fait possible. Rien à configurer vraiment, un petit fichier build.sbt devrait faire l'affaire, quelque chose comme :

organization := "your.group.id"

name := "Your project"

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq( <any normal jar deps> )

Et courir sbt package à partir de la ligne de commande.

1 votes

J'ai manqué les sections du guide de démarrage qui mentionnaient le paquet sbt ! github.com/harrah/xsbt/wiki/Getting-Started-Running github.com/harrah/xsbt/wiki/Java-Sources

0 votes

Le nouvel emplacement du deuxième lien ci-dessus est scala-sbt.org/release/docs/Detailed-Topics/Java-Sources

0 votes

Running sbt package ne semble plus être nécessaire (à moins que je ne manque quelque chose) ; scala-sbt.org/release/docs/Detailed-Topics/Java-Sources ne le mentionne même pas.

33voto

raimohanska Points 1094

Pour moi, il a également été utile de supprimer les informations relatives à la version de scala des chemins d'accès aux artefacts générés, comme décrit dans le document suivant cette réponse . Vous voudrez également supprimer la bibliothèque Scala comme dépendance de tout fichier pom ou ivy que vous publiez.

Voici ce dont vous aurez besoin :

crossPaths := false
autoScalaLibrary := false

45 votes

autoScalaLibrary := false supprime la dépendance de Scala.

13voto

Vasya Novikov Points 1670

Bien sûr, vous pouvez. Exemple de configuration :

name := "myName"
version := "0.1"
organization := "org.myorganization"

javacOptions in (Compile, compile) ++= Seq("-source", "1.8", "-target", "1.8", "-g:lines")

crossPaths := false // drop off Scala suffix from artifact names.
autoScalaLibrary := false // exclude scala-library from dependencies

En résumé. J'aime SBT, mais j'ai ressenti le besoin d'écrire le build complet avec toutes les parties délicates de son utilisation pour java. Notez que cette configuration peut être meilleur qu'un maven car vous aurez des fonctionnalités intéressantes telles que les tests incrémentaux ou même les exécutions incrémentales. Pensez également à ajouter sbt-assembly si vous avez des dépendances et que vous voulez créer de gros jars (exécutables).

3voto

michael Points 263

Il y a un bel exemple de build.sbt pour les sources purement Java à l'adresse suivante Blog de Xerial notamment comment publier des artefacts de style Maven sans balise de version Scala.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X