Javac

2014-06-13 21 views
15

yerine AspectJ derleyicisini kullanırken derleme yaparken bir çoklu modül projem var. Durum şu anda "çekirdek" projesine eklenmiştir. Burada bir mvn clean install yaparken çalışır. Ancak ebeveyn proje üzerinde mvn clean install yapmaya çalışıyor bu yüzden bu projelerin birini derleyerek bu hata ile başarısız:Javac

tip org.hibernate.annotations.CacheConcurrencyStrategy çözülmesi mümkün değildir. bu yüzden değil - O dolaylı olarak gerekli .class dosyaları

O projede hazırda çekirdek bağımlılık eklerseniz çok çalıştığını, ancak mantıklı değil bağımlılığı olmamalıdır projelere bağımlılıkları eklemesini başvuruda bulunulan bir çözüm. javac ile derlerken iyi çalışıyor.

Sebep nedir? Ve bunu nasıl çözebilirim ki AspectJ derleyicisini, bağımlılığı olmayan projelere bağımlı kalmaksızın kullanabilirim? Yeni öğrendim

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.5</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <complianceLevel>1.6</complianceLevel> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Güncelleme:

ebeveyni POM Bu yapılandırma var. Her seferinde mvn clean install çalışıyor. Ancak, bir kez mvn [clean] install çalıştıran başarısız olur. Daha sonra clean olmadan mvn install çalışıyor. Hedef klasördeki builddef.lst'un temiz çalışıp çalışmadığınızı temel alarak çalışmasının ve başarısız olmasının nedeni olduğunu görüyorum. Şimdi benim sorum şu: Bu dosyayı otomatik olarak nasıl oluşturuyorsunuz?

Veli POM-file:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany</groupId> 
    <artifactId>core-lib</artifactId> 
    <name>core-lib</name> 
    <packaging>pom</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>aspectj-maven-plugin</artifactId> 
       <version>1.5</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <complianceLevel>1.6</complianceLevel> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.7.4</version> 
     </dependency> 
    </dependencies> 

    <modules> 
     <module>core-xyz</module> 
     <module>core-xyz2</module> 
    </modules> 
</project> 
+0

Kural dışı durumun stacktrace'si nedir ve görünüşünüz nasıl görünüyor? – SpaceTrucker

+0

@KnightRider, bir yorum eklemek yerine Sorunuzu güncellemelisiniz. –

+0

@ LeonardBrünings Bitti. –

cevap

3

derin kazmak maven çağırma hata ayıklama etkinleştirin. Aspectj derlemesinin yalnızca ilk maven temizliği sırasında başlatılması çağrıldığını gözlemlemelisiniz. İlk çağırma işleminden sonra builddef.lst zaten mevcut olduğundan, temizlemeden çağırmak, açığı derlemeyi atlar.

Bu AspectJ'yi derlemek eklentisi davranış önceden gözlemlenmiş ve burada anlatılır:

http://out-println.blogspot.com/2007/08/compile-time-checks-with-aspectj-part-2.html?m=1

Alttaki sorunu gidermek için daha derin bakmak gerekir, ancak bir yorumcu, AspectJ derleyici önerdi zaten olarak sadece bunu gerektiren modüllerde etkinleştirilmelidir. Aksi halde, daha önce gözlemlediğiniz gibi, diğer bağımlılıklar için de en az bağımlılık gereklidir. Aspectj'i kendi çalışmamda, sadece onu gerektiren modüller ile kısıtlayarak, kendi işime dahil ettim.

3

AspectJ compiler Maven plugin, mevcut bir builddef.lst bulmak için argumentFileName ayarlayabilirsiniz.

builddef.lst ürününü oluşturabilir ve bunları kaynak klasörünüze kopyalayabilir ve AspectJ Maven eklentisine bu dosyayı kullanmasını bildirebilirsiniz.

İlgili konular