M2E ve maven'e sahip olmak, tutulma kaynak klasörleri olarak kaynak klasörler oluşturdu


92

Tutulmada bir maven projem var ve kod oluşturmak için açıklama işlemcileri çalıştıran maven hedeflerim var. Bu kodun çıktı klasörü hedef / üretilen-kaynaklar / apt şeklindedir.

Eclipse'in üretilen bu kodu görebilmesi için, eclipse projesine kaynak klasör olarak target / generated-sources / apt eklemem gerekiyor.

Ancak bu, "Maven Yapılandırma Sorunu" türünde bir hata olmasına neden olur.

Proje yapılandırması pom.xml ile güncel değil. Proje yapılandırma güncellemesini çalıştırın

Eclipse'in maven setine göre farklı bir kaynak klasör seti olduğu için durumun neden böyle olduğunu anladığımı düşünüyorum. Ama bu farklı sete ihtiyacım var çünkü oluşturulan kaynak klasörleri görebilmek için tutulmaya ihtiyacım var ...

Tamamen maven inşa ederken, bu kaynak klasörler maven tarafından yapıya dahil edilecektir.

btw, maven eclipse eklentisinin resmi tutulma sürümüne yükseltme yaptım, m2e 1.0 - eskiden m2eclipse idi. Eski m2eclipse sürümüne geri dönmeden önce m2e eklentisi ile buna bir çözüm / çözüm bulup bulamayacağımı görmek isterim.

Yanıtlar:


106

Kaynak dizini build-helper-eklentisiyle eklemeniz gerekir .

Şöyle:

 <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/java/</source>
                </sources>
            </configuration>
        </execution>
    </executions>
 </plugin>

Ayrıca yapmanız gerekenler:


4
Bu çözüm m2e connector for build-helper-maven-plugin, Eclipse
Brad Cupit'e

Benim için çalışmıyor. Derleme yardımcı eklenti kurulumunu detaylandırabilir misiniz?
Kevin Wong

<plugin> <groupId> org.codehaus.mojo </groupId> <artifactId> build-helper-maven-plugin </artifactId> <executions> <execution> <id> add-source </id> <phase> create- kaynaklar </phase> <goals> <goal> add-source </goal> </goals> <configuration> <sources> <source> $ {project.build.directory} / generated-sources / java / </source> <source> $ {project.build.directory} / jaxws / wsimport / java </source> </sources> </configuration> </execution> </executions> </plugin>
Kevin Wong,

2
Kepler ile, yardımcı maven eklentisi oluşturmak için m2e konektörü de kurmam gerekti. (Sadece tutulmanın maven pom düzenleyicisinin içinde ponuzu açın ve üstteki kırmızı bağlantıya tıklayın).
Snicolas

1
Bildiğim kadarıyla söyleyebilirim, itibariyle build-helper-maven-pluginile <version>olarak belirtilen 3.2.0(yazı yazılırken son) Apt M2E Connector kullanmaya gerek yoktur. Şu anda Eclipse IDE 2020-06 üzerinde çalışılıyor, Eclipse'de gömülü Maven 3.6.3 kullanılarak ve dışlamalara sahip kaynak klasörle ilgili sorunlarımız (**), kaynak klasörlerin dizin yollarını eklemeye çalıştıktan sonra ortadan kalktı. Şimdi, dahil edilenlerin tümü var (** / *. java) içlerinde.
tom_mai78101

80

Hata mesajına sağ tıklayın:

Proje yapılandırması pom.xml ile güncel değil Proje yapılandırma güncellemesini çalıştırın

Sorunlar Görünümü'nde Hızlı Onarım'ı seçin ve varsayılan Güncelleştirme proje yapılandırmasını seçmek için Bitir'i tıklayın . Bu onu düzeltir.


1
Bu benim için de çalışıyor. Neden bu kabul edilen cevap değil? Kabul edilen cevap çok fazla görünüyor.
Niels Basjes

14
@NielsBasjes bu kabul edilen cevap değil çünkü yardımcı olmuyor. Eclipse'deki derleme yoluna bir şey eklediğinizde, bu artık POM ile senkronize olmadığınız anlamına gelir, dolayısıyla uyarı. Proje yapılandırmasını güncellemek, başlangıçta ilk sorun olan fazladan yapı yolu girişini kaldırır.
Phil

4

Yeni m2e / maven / apt sürümlerine geçtikten sonra, ... buildhelper tarafından eklenen yapı yolunun neden olduğu yinelenen dosyalar nedeniyle oluşturucu aynalarım vardı, bu yüzden "apt tarafından oluşturulan" -Folders'ı buildhelper'dan kaldırmam gerekti.

Eclipse'deki Sorunu düzeltmek için, M2E'deki Update Maven Yapılandırması aracılığıyla "apt tarafından oluşturulan" klasörünü eklememek için, bu sorunu gidermek için bir M2E Eklentisi yazdım. Maven-apt-eklentisinde yapılandırılan outputDirectories'i Projenin yapı yoluna ekler.

https://apt-m2e.googlecode.com


1
maalesef @Stefan Wo eklenti sayfanız / deponuz artık googlecode.com'da 404; Eclipse Marketplace girişinin yanı sıra onu da günceller misiniz? bkz. marketplace.eclipse.org/content/apt-m2e-connector
maxxyme

3

M2e 1.0'da Maven eklentilerinin kullanımı değişti. Kod oluşturma eklentiniz için belirli bir m2e uzantısından yoksun olabilirsiniz. İşte bulmayı başardığım tüm belgeler .

Bu hata raporu da alakalı olabilir.


i M2E yenidir ve üstün gelişme çok var sanırım
Michael Wiles

2
Sorunun şu olduğuna inanıyorum, m2eclipse'in eskiden yaptığı gibi, Maven eklentilerini m2eclipse projelerine uygulamak, çoğu zaman işe yarıyordu, ancak her zaman doğru şeyi yapacağının garantisi yoktu. Yeni yaklaşım potansiyel olarak daha sağlam, ancak birçok Maven eklentisinin m2e karşılığı olmasını gerektiriyor.
Nicola Musatti

2

https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081

CXF JIRA'ya (bkz. 1 ), cxf-codegen-eklentisinin kendisine yaşam döngüsü eşlemeleri ekleme isteği . Bu m2e 1.1 gerektirir, ancak yaşam döngüsü haritalama API'sinin cxf-codegen-plugin ve cxf'den daha az değişeceğini varsayarak, cxf projesi dışında oluşturulmuş bağlayıcılara sahip olmaktan daha iyi bir yaklaşım olduğuna inanıyorum.


0

Ayrıca keşif kataloğunda bulunan buildhelper m2e bağlayıcısını da kullanabilirsiniz. Eclipse 3.7 kullanıyorum


0

Web Geliştiricileri için Eclipse Java EE IDE. Sürüm: Juno Service Release 1

mvn archetype:generate \
   -DarchetypeGroupId=org.codehaus.mojo \
   -DarchetypeArtifactId=gwt-maven-plugin \
   -DarchetypeVersion=2.5.0

mvn clean install

mükemmel çalışın.

Ama tutulmada Asinc sınıfında da aynı hataya sahibim.

Projede F5'e basmanız yeterlidir. Bu sorunu düzeltin.


0

3.0.6 sürümüne sahip olan yay 3.1.1'i kullanarak iyi çalıştığını bulduğum şey buydu. Eklenti kurulumunu yaptıktan ve pom'un doğru alanına yerleştirdikten ve java kaynaklarının target / generated-sources / cxf klasörüne yerleştirilmesi için argline ve endorseddirs'i ekledikten sonra maven kaynakları oluşturdu.

....

 <properties>...

   <dependencyManagement>
      <dependencies>.....
   </dependencyManagement>

<dependencies>
   <dependency>....

</dependencies>



<!-- *************************** Build process ************************************* -->
<build>
    <finalName>eSurety</finalName>
    <plugins>
        <!-- Force Java 6 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- Deployent on AS from console
        <plugin>
            <groupId>org.jboss.as.plugins</groupId>
            <artifactId>jboss-as-maven-plugin</artifactId>
            <version>${version.jboss.as.maven.plugin}</version>
        </plugin>
        -->

        <!-- wildbill added tomcat plugin -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>              
        </plugin>

        <!-- Surefire plugin before 2.9 version is buggy. No need to declare here,
              it's being referenced below w/ the version
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
        </plugin>
        -->

        <!-- developer added these -->   
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>           
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>                       
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>                       
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                    <artifactItem>
                        <groupId>javax.xml.ws</groupId>
                        <artifactId>jaxws-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>target/generated-sources/cxf</outputDirectory>
            </configuration>                      
        </plugin>                                                 
    </plugins>
</build>



<!-- *********************** Profiles ************************************ -->
<profiles>
    <profile>
        <!-- When built in OpenShift the 'openshift' profile will be 
            used when invoking mvn. -->
        <!-- Use this profile for any OpenShift specific customization 
            your app will need. -->
        <!-- By default that is to put the resulting archive into the 
            'deployments' folder. -->
        <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
        <id>projName</id>
        <build>
            <plugins>                                                   
                <plugin>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-codegen-plugin</artifactId>
                    <version>2.5.2</version>                        
                    <executions>
                        <execution>
                            <id>process-sources</id>
                            <phase>generate-sources</phase>                                                                                               
                            <configuration>
                                <fork>once</fork>
                                <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs>                                          
                            </configuration>
                            <goals>                             
                                <goal>wsdl2java</goal>
                            </goals>
                        </execution>
                    </executions>                       
                    <dependencies>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-impl</artifactId>
                           <version>2.2</version>
                        </dependency>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-xjc</artifactId>
                           <version>2.2</version>
                        </dependency>
                     </dependencies>
                </plugin>

                <!-- Actual war created in default target dir -->
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.2</version>                                               
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Wsdl klasörünüz $ {basedir} / src / main / resources dizinindeyse, onu otomatik olarak bulur

Bu yardımcı olur umarım! ~ yabani ot


0

Herhangi bir nedenle derleme yardımcı eklentisini en kolay şekilde kullanamamanız durumunda (her ne kadar kullanışlı ve biraz sıkıcı olmasa da) bununla başa çıkmayı buldum:

  1. Üretilen kaynak kodunu kendi projesine veya alt modülüne ayırın.
  2. Ana proje üzerinde çalışırken, bu projeyi ağırlıklı olarak kapalı tutmak veya Eclipse'e aktarılmamak isteyeceksiniz.
  3. Üretilen koda ihtiyaç duyan üst projede, artık Maven pom bağımlılığı aracılığıyla üretilen kaynak kod projesine bağlı olduğunuzdan emin olun.
  4. Üretilen kodu güncellemeniz gerektiğinde, oluşturulan kod projesine gidin ve çalıştırın mvn install. Şimdi sağ tıklayıp Maven-> Projeyi Güncelle ... 'yi seçerek ana projeyi yenileyin ...

Bu genellikle SOAP WSDL'ler (Apache CXF) veya bir veritabanından oluşturulan kod (jOOQ) gibi kod üretimi için yarı statik bir kaynak kullanan projeler için işe yarar. APT ve diğer AspectJ benzeri kodlar için, kaynağı sık sık düzenlediğiniz için o kadar iyi çalışmaz.


-1

derleme yardımcı eklentisinin yapılandırması bizim için işe yaradı.

ancak, hedef klasörün her zaman açıklama işleminin kendisi için kullandığınız eklentinin yapılandırmasına eşit olması gerektiğini unutmayın.

örneğin, maven-işlemci eklentisi varsayılan olarak $ {project.build.directory} / oluşturulan-sources / apt hedef klasörünü kullanır. Oluşturulan kaynak dosyalarınız için başka bir hedef istiyorsanız, bunu aşağıda gösterildiği gibi etikete göre ayarlayabilirsiniz.

<plugin>
<groupId>org.bsc.maven</groupId>
                <artifactId>maven-processor-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <id>process</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <phase>process-sources</phase>
                        <configuration>
                            <defaultOutputDirectory>apt_generated</defaultOutputDirectory>
                            <processors>
                                <processor>com.any.processor.invoker</processor>
                            </processors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

-3

İşte çözüm

  1. İşaretçi Görünümünü Aç (Pencere> Görünümü Göster
  2. Hata mesajına sağ tıklayın
  3. Hızlı Onar'ı seçin
  4. Bitir'e tıklayın
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.