2011-02-04 39 views
5

Bất kỳ ai có thể có được Scala và AspectJ (AJDT) để chơi độc đáo với nhau trong Eclipse 3.6?Trộn AspectJ và Scala trong một Dự án Eclipse

Có vẻ như thợ dệt của Scala xung đột với người thợ dệt của AspectJ. Tôi hy vọng tôi chỉ thiếu một cái gì đó.

Edit: Chơi độc đáo trong cùng một dự án

+1

Matt R dưới đây là chính xác, nó có thể cài đặt hai plugin với nhau, nhưng có thể có một số không tương thích mà chúng ta không nhận thức được. Vì vậy, hãy cụ thể hơn về những gì đang diễn ra.\ –

+0

@Andrew Eisenberg Về cơ bản các nhà dệt AspectJ ngừng dệt khi tôi thêm Trình tạo Scala vào dự án. Nếu tôi vô hiệu hóa trình xây dựng scala tất cả hoạt động tốt, ngoại trừ không có biên dịch Scala. –

+0

Phải ... Tôi hiểu chuyện gì đang xảy ra. –

Trả lời

3

Dựa trên nhận xét của bạn ở trên, có vẻ như bạn muốn một dự án duy nhất sử dụng cả trình tạo AspectJ và trình xây dựng Scala. Điều này là không thể. Mỗi người đại diện cho trình biên dịch riêng của mình và hai trình biên dịch không tương thích. Trình biên dịch Scala có thể xây dựng mã Java và Scala cùng nhau, và trình biên dịch AspectJ có thể xây dựng mã AspectJ và Java cùng nhau, nhưng đó là nó.

Nếu bạn muốn các khía cạnh áp dụng cho mã Scala, bạn phải tách mã AspectJ và Scala thành các dự án khác nhau và sau đó thêm dự án Scala vào đường dẫn của dự án AspectJ của bạn.

Đây là điều tương tự mà bạn sẽ cần phải làm nếu bạn đang biên dịch từ kiến ​​hoặc dòng lệnh.

+0

Đây là những gì tôi đã làm. AspectJ + Java cực kỳ mạnh mẽ (tôi thậm chí còn tranh luận mạnh hơn Scala). Nhưng Scala thắng cú pháp. Nếu chỉ có Java 7 bị loại bỏ và có đóng cửa :) –

+0

Nếu bạn đang sử dụng các khía cạnh dựa trên chú thích, bạn hoàn toàn có thể viết chúng trong Scala trong một dự án Scala sau đó biên dịch chúng bằng scalac & iajc. Vì vậy, có những dự án biên dịch đúng với Ant nhưng không có trong Scala IDE. Tôi hy vọng ScalaBuilder được mở rộng để dệt các khía cạnh Scala được chú thích. – Nick

+0

Ngoài nhận xét cuối cùng của tôi - bạn có thể chạy các khía cạnh Scala được chú thích trong IDE bằng cách sử dụng thời gian tải dệt (http://www.eclipse.org/aspectj/doc/next/devguide/ltw-configuration.html#enabling-load- thời gian dệt). – Nick

2

Ngay bây giờ, phiên bản đề nghị là still Eclipse3.5.2.

Vé như 1000075 hoặc 3251 đề cập đến:

Nếu bạn đang tuyệt vọng có một đêm xây dựng trang web cập nhật thử nghiệm tại http://download.scala-ide.org/nightly-update-wip-helios-2.8.0.final.

Ngày nay, hiện nay hàng đêm bạn có thể thử với Helios 3.6 sẽ là:

http://download.scala-ide.org/nightly-update-master-2.8.1.final

+0

Phiên bản tôi đã thử một lúc trước là hàng đêm nhưng tôi sẽ thử lại. –

-1

Bạn có nghĩa là có cả Scala plug-in và AJDT cài đặt cùng một lúc? Điều này chắc chắn là có thể thực hiện được - cần thiết cho việc phát triển trình cắm thêm Scala, ví dụ.

tôi thực hiện như sau:

  • Cài đặt các công cụ dev AspectJ + eclipse tính năng dịch vụ dệt
  • Install Scala IDE, nhưng bỏ qua JDT Weaving cho Scala
+0

Tôi chưa cài đặt cả hai plugin. Vấn đề là tôi muốn sử dụng AspectJ để cắt ngang những lời khuyên mà tôi không thể làm với Traits. –

0

Tôi đã đấu tranh với điều này một thời gian. Đây là Giải pháp của tôi:

Trước tiên, hãy tách Scala và mã AspectJ của bạn thành các dự án khác nhau.

Sau đó thêm trình tạo Ant vào dự án Scala của bạn. Nó chạy bất cứ khi nào người xây dựng scala chạy và không dệt. Nó sử dụng ant4eclipse để trích xuất classpath, nhưng bạn sẽ phải cung cấp vị trí của thư viện 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> 
Các vấn đề liên quan