2011-02-04 15 views
5

Ktoś był w stanie uzyskać Scala i AspectJ (AJDT), aby ładnie grać razem w Eclipse 3.6?Mieszanie AspectJ i Scala w projekcie Eclipse

Wygląda na to, że tkacz Scala jest w konflikcie z tkaczem AspectJ. Mam nadzieję, że czegoś mi brakuje.

Edit: Play ładnie w tym samym projekcie

+1

Matt R poniżej jest poprawny, możliwe jest zainstalowanie dwóch wtyczek razem, ale mogą wystąpić pewne niezgodności, że nie są świadomi. Tak więc, proszę bardziej szczegółowo opisać, co się dzieje.\ –

+0

@Andrew Eisenberg Zasadniczo tkacze AspectJ przestają tkać po dodaniu Scala Builder do projektu. Jeśli wyłączę konstruktor scala, wszystko działa dobrze, z wyjątkiem kompilacji Scala. –

+0

Dobrze ... Rozumiem, co się dzieje. –

Odpowiedz

3

Bazując na swoim komentarzu powyżej, Wygląda na to, że chcesz, aby pojedynczy projekt korzystał zarówno z kreatora AspectJ, jak i programu Scala Builder. To jest niemożliwe. Każdy deleguje do własnego kompilatora, a dwa kompilatory nie są (jeszcze) kompatybilne. Kompilator Scala może budować kod Java i Scala razem, a kompilator AspectJ może budować kod AspectJ i Java razem, ale to wszystko.

Jeśli chcesz, aby aspekty miały zastosowanie do twojego kodu Scala, musisz oddzielić swój kod AspectJ i Scala na różne projekty, a następnie dodać projekt Scala do ścieżki wejściowej twojego projektu AspectJ.

Jest to to samo, co trzeba zrobić, jeśli kompilujesz z ant lub linii poleceń.

+0

To jest fakt, co zrobiłem. AspectJ + Java jest niezwykle potężny (nawet twierdziłbym, że jest potężniejszy niż Scala). Ale Scala wygrywa syntaktycznie. Gdyby tylko Java 7 była niedostępna i zamknięta :) –

+0

Jeśli korzystasz z aspektów związanych z adnotacją, możesz je napisać w Scali w projekcie Scala, a następnie skompilować je za pomocą skalaca i iajc. Są więc projekty, które kompilują się poprawnie z Antem, ale nie w Scala IDE. Mam nadzieję, że ScalaBuilder zostanie rozszerzony o splatanie opisywanych aspektów Scala. – Nick

+0

Po moim ostatnim komentarzu - możesz uruchamiać przypisane aspekty Scala w IDE za pomocą tasowania czasu ładowania (http://www.eclipse.org/aspectj/doc/next/devguide/ltw-configuration.html#enabling-load- tkanie czasu). – Nick

-1

masz na myśli mając zarówno Scala plug-in i AJDT zainstalowane jednocześnie? Jest to zdecydowanie wykonalne - na przykład potrzebne do stworzenia wtyczki Scala.

I wykonaj następujące czynności:

  • Zamontować AspectJ narzędzia dev + eclipse cechy usługi tkania
  • Install Scala IDE, ale pomijają JDT Weaving do Scala
+0

Nie Mam zainstalowane obie wtyczki. Problem polega na tym, że chciałbym użyć AspectJ do przekrojowego doradzania, którego nie mogę zrobić z Cechami. –

0

Od pewnego czasu walczę z tym. Oto moje rozwiązanie:

Najpierw oddziel swoją Scalę i swój kod AspectJ w różnych projektach.

Następnie dodaj konstruktora Ant do projektu Scala. Działa, gdy tylko scala builder działa i wykonuje tkactwo. Używa ant4eclipse do wypakowania ścieżki klasy, ale musisz podać lokalizację biblioteki scala.

build.xml:

<project name="simple-example" default="compile" 
xmlns:ant4eclipse="antlib:org.ant4eclipse" 
     xmlns:antcontrib="antlib:net.sf.antcontrib"> 

<ant4eclipse:jdtClassPathLibrary name="org.scala-ide.sdt.launching.SCALA_CONTAINER"> 
    <fileset file="../lib/scala-library.jar"/> 
</ant4eclipse:jdtClassPathLibrary > 

<ant4eclipse:getJdtClassPath 
    workspacedirectory=".." 
    projectName="lpfExample" 
    property="classpath"/> 

<target name="compile"> 
    <iajc sourceroots="src" destdir="bin"> 
     <inpath> 
      <pathelement location="bin" /> 
     </inpath> 
     <aspectpath> 
      <pathelement location="../aspects/bin"/> 
     </aspectpath> 
     <classpath path="${classpath}"/> 
    </iajc> 
</target> 
</project>