Compile WebApp avec ADK local

Bonjour à tous,

N’étant pas un pro de gradle, j’ai besoin d’un coup de main pour m’aider à résoudre mon problème de dépendance avec l’ADK.

Je cherche à modifier le build.gradle de l’application abs-webapp afin d’utiliser le kit de développement local et non le snapshot en ligne (ligne classpath "com.axelor:axelor-gradle:5.0.0-rc5").

J’ai d’abord tenté d’ajouter des lignes classpath files(...) dans dependencies {} pour les 6 jars de l’ADK mais il n’y a pas qu’eux, leurs dépendances (google, shiro, etc…) sont aussi nécessaires. J’imagine qu’il est possible de faire plus simple et d’éviter la déclaration unitaire des dépendance ?

Si vous avez une idée ou une solution je suis preneur.

Je vous remercie beaucoup d’avance.

Cdlt

Bonjour,
Normalement sans rien modifier, il suffit de lancer un ./gradlew publishToMavenLocal dans le répertoire de l’ADK. Le repo local a la priorité sur les repos axelor
Cordialement,

Bonsoir @beuss,

Merci beaucoup, c’est exactement ce que je cherchais. Genial.

Bon week-end

Cdlt

Bonjour,

Il est également possible de compiler ABS en utilisant les sources locales d’ADK avec la commande :

$ ./gradlew --include-build …/axelor-development-kit --no-daemon build

Cordialement

Bonjour,

Merci beaucoup de votre retour

Cdlt

Bonjour,

Est-il possible de développer l’ABS avec la fonction hotswap pour la version locale de l’ADK?

Cordialement.

Bonjour,

Pour moi cela ne doit pas poser de problème, mais peut-être que dans ce cas il est préférable de publier votre version de l’ADK dans le maven local et de mettre “mavenLocal()” avant “mavenCentral()” dans le gradle.build.

Je n’utilise pas le hotswap donc je ne peux malheureusement pas vous en dire plus.

Cdlt

Bonjour,

Pour info, on peut inclure le sdk au runtime dans la config gradle, donc pouvoir débuger avec les sources. Le hot swap fonctionne également (avec Intellij)

Dans le projet principal faut ajouter la directive includeBuild avec le chemin de l’adk

abs-webapp > settings.gradle

 //Include all modules
rootProject.name = "axelor-erp"

includeBuild '../axelor-development-kit'

def modules = []
file("modules").traverse(type: groovy.io.FileType.DIRECTORIES, maxDepth: 1) { it ->
    if(new File(it, "build.gradle").exists()) { modules.add(it) }
}

Il y a quelques erreurs de compilation pour le sdk, j’ai succinctement mis en commentaire ce qui posait problème:

axelor-development-kit > javadoc.gradle

task generateDocs(type: Javadoc) {

  description "Generate API docs."
  group "Axelor"

  destinationDir = file("${buildDir}/docs")
  failOnError = false

  //source = subprojects.sourceSets.main.allJava
  //classpath = files(subprojects.sourceSets.main.compileClasspath)

axelor-development-kit > style.gradle

subprojects {
  apply plugin: com.diffplug.gradle.spotless.SpotlessPlugin
  spotless {
    java {
      //googleJavaFormat()
    }
  }
  //task formatCode(dependsOn: ['licenseFormat', 'spotlessApply'])
}