Fout bij het samenstellen van een gemengd Java/Scala-project en Lombok

Ik probeer een gemengd Maven Java/Scala-project samen te stellen met een Scala-klasse die afhankelijk is van een Java-bean met lombok-annotaties. Ik heb geprobeerd het lombok jar-bestand toe te voegen aan het opstartklasse-pad van de Scala-compiler en de lombok-agent, maar de compiler kon de gegenereerde getters nog steeds niet vinden. Is er een manier voor de Scala-compiler om de lombok-annotaties te herkennen? Zo nee, wat zou een goede oplossing zijn?

Houd er rekening mee dat ik probeer een ander maven-project te vermijden alleen voor het samenstellen van deze bean, omdat de bean logisch tot hetzelfde project behoort. Ook kan ik de boon in Scala niet herschrijven omdat deze later in een GWT-project wordt gebruikt.

Dank je,

9

1 antwoord

Ik denk dat je het niet kunt vermijden. Normale Scala/Java-integratie werkt als volgt:

  1. Scala goes first, since Java doesn't know anything about Scala.
    1. Scalac parsers Java files and learns about visible elements.
    2. Scalac reads Scala files and generate class files.
  2. Java goes last, and reads Java files plus the class files generated by Scala.

Het voor de hand liggende probleem is dat Scala niets weet van Lombok-annotaties, dus het kan de elementen die ermee worden gegenereerd niet achterhalen.

Als u geen afhankelijkheid hebt van Java naar Scala, kunt u de volgorde eenvoudigweg omdraaien: laat Java eerst gaan en zorg dat Scala de uitvoerklassebestanden van javac op zijn klassenpad opneemt.

Anders denk ik dat je het moet opbreken.

12
toegevoegd
@rzwitserloot Handrolled parser (it zou verrassend moeten zijn - zijn werk werd de basis voor de javac beginnend met JDK 1.3). Het ondersteunt geen annotatieprocessors.
toegevoegd de auteur Daniel C. Sobral, de bron
@rzwitserloot Argh! Ik meende het zou niet verrassend moeten zijn ...
toegevoegd de auteur Daniel C. Sobral, de bron
Lombok-ontwikkelaar hier: weet je misschien hoe scala Java-bestanden parseert? ecj? javac? Handrolled parser? Ik vraag me ook af of dit proces annotatieprocessors helemaal ondersteunt. Zo ja, dan kunnen we misschien iets doen.
toegevoegd de auteur rzwitserloot, de bron
Bedankt Daniel. De meeste afhankelijkheden gaan van Java naar Scala. Tot nu toe zijn het alleen dit soort bonen die de omgekeerde afhankelijkheid creëren.
toegevoegd de auteur Eduardo, de bron
Bedankt iedereen. Dit verduidelijkt het.
toegevoegd de auteur Eduardo, de bron