source

M2E 및 생성된 소스 폴더를 Eclipse 소스 폴더로 이동

manycodes 2023. 5. 11. 21:36
반응형

M2E 및 생성된 소스 폴더를 Eclipse 소스 폴더로 이동

저는 Eclipse에 있는 메이븐 프로젝트를 가지고 있고 코드를 생성하기 위해 주석 프로세서를 실행하는 메이븐 목표를 가지고 있습니다.는 이코의출폴다같습다니음과입니다.target/generated-sources/apt.

이된 코드를 는 이립스생코보드려합을 추가해야 합니다.target/generated-sources/apt이클립스 프로젝트의 소스 폴더로 사용할 수 있습니다.

그러나 이로 인해 "Maven Configuration Problem" 유형의 오류가 발생합니다.

프로젝트 구성이 최신 버전이 아닙니다.pom.xml 실행

저는 이클립스가 메이븐 세트와 다른 소스 폴더 세트를 가지고 있기 때문에 왜 그런지 이해할 수 있다고 생각합니다.는 이클립스를 는 이클립스가 필요하기 때문에 다른 세트가 필요합니다.generated원본 폴더...

순수 메이븐 빌드를 수행할 때 이러한 소스 폴더는 메이븐에 의해 빌드에 포함됩니다.

그나저나, 저는 메이븐 이클립스 플러그인의 공식 이클립스 릴리스인 m2e 1.0으로 업그레이드했습니다. m2e 1.0은 m2이클립스였습니다.이전 m2eclip 버전으로 돌아가기 전에 m2e 플러그인으로 이 문제에 대한 해결책을 찾을 수 있는지 알고 싶습니다.

빌드 도우미 플러그인과 함께 원본 디렉터리를 연결해야 합니다.

이와 같은 경우:

 <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>

또한 다음을 수행해야 합니다.

  • Eclipse Marketplace에서 "Apt M2E 커넥터"를 설치합니다.그렇게 하려면 pom.xml의 Overview 탭에서 오류를 클릭하고 "Discover"를 선택합니다.
  • build-packet-maven-packet에 대한 플러그인 실행 필터가 없는지 확인합니다(https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html) 참조).

오류 메시지를 마우스 오른쪽 버튼으로 클릭합니다.

프로젝트 구성이 pom.xml로 최신이 아님 프로젝트 구성 업데이트 실행

문제 보기에서 빠른 수정을 선택하고 마침을 클릭하여 기본 프로젝트 구성 업데이트를 선택합니다.이것으로 해결됩니다.

새 버전의 m2e/maven/apt로 전환한 후...빌드 도우미가 추가한 빌드 경로로 인해 중복된 파일 때문에 빌드 오류가 발생했기 때문에 빌드 도우미에서 "apt-generated" 폴더를 제거해야 했습니다.

M2E의 Update Maven Configuration을 통해 "apt-generated" 폴더를 추가하지 않고 Eclipse의 문제를 해결하기 위해 M2E 플러그인을 작성했습니다.maven-apt-plugin에 구성된 출력 디렉터리를 프로젝트의 빌드 경로에 추가합니다.

https://apt-m2e.googlecode.com

m2e 1.0에서는 메이븐 플러그인의 처리가 변경되었습니다.코드 생성 플러그인에 대한 특정 m2e 확장이 부족할 수 있습니다.여기 제가 찾은 모든 서류가 있습니다.

이 버그 보고서도 관련이 있을 수 있습니다.

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

CXF JIRA(1 참조)에 cxf-codegen-plugin 자체에 라이프사이클 매핑을 추가하도록 요청합니다.이를 위해서는 m2e 1.1이 필요하지만 라이프사이클 매핑 API가 cxf-codegen-plugin 및 cxf보다 변경 빈도가 적을 것으로 가정할 때 cxf 프로젝트 외부에 커넥터를 구축하는 것보다 더 나은 접근 방식이라고 생각합니다.

검색 카탈로그에서 사용할 수 있는 빌드 도우미 m2e 커넥터를 사용할 수도 있습니다.Eclipse 3.7을 사용하고 있습니다.

웹 개발자를 위한 이클립스 Java EEIDE.버전: 주노 서비스 릴리스 1

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

mvn clean install

완벽하게 작동합니다.

하지만 일식에서는 Asinc 수업에서도 같은 오류가 발생합니다.

프로젝트에서 F5를 누르기만 하면 됩니다.이 문제를 해결합니다.

이것이 바로 3.0.6 버전이 포함된 스프링 3.1.1을 사용하는 데 효과적이라는 것을 알게 된 것입니다.일단 내가 플러그인을 설정하고 폼의 올바른 영역에 넣고 자바 소스를 타겟/생성된 소스/cxf 폴더로 내보내도록 Argline과 승인된 dir를 포함시킨 후 maven은 소스를 ok로 생성했습니다.

....

 <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 폴더가 ${basedir}/src/main/resources에 있으면 자동으로 찾습니다.

이것이 도움이 되길 바랍니다!와일드빌

어떤 이유로 빌드 도우미 플러그인을 가장 쉬운 방법으로 사용할 수 없는 경우(그렇게 편리하고 다소 지루하지는 않지만) 이 문제를 해결하기 위해 알게 된 것은 다음과 같습니다.

  1. 생성된 소스 코드를 자체 프로젝트 또는 하위 모듈로 분리합니다.
  2. 상위 프로젝트에서 작업할 때 이 프로젝트를 주로 닫거나 이클립스로 가져오지 않은 상태로 유지할 수 있습니다.
  3. 생성된 코드가 필요한 상위 프로젝트에서는 메이븐폼 종속성을 통해 생성된 소스 코드 프로젝트에 의존해야 합니다.
  4. 해야 할 하여 실행합니다.mvn install이제 마우스 오른쪽 단추를 클릭하고 Maven->Update Project...(프로젝트 업데이트...)를 선택하여 상위 프로젝트를 새로 고칩니다.

일반적으로 SOAP WSDL(Apache CXF)이나 데이터베이스에서 생성된 코드(jOOQ)와 같은 코드 생성에 세미스태틱 소스를 사용하는 프로젝트에 적합합니다.APT 및 기타 AspectJ와 유사한 코드의 경우 소스를 자주 편집하기 때문에 잘 작동하지 않습니다.

이 질문에 대한 새로운 방문자를 위해 -

도우미 메이븐 플러그인과 m2e 커넥터를 함께 만듭니다.2.0 이전 버전의 빌드 도우미가 eclipse 아카이브 링크로 이동했습니다.

보관된 빌드 도우미 버전

목록에서 올바른 링크를 선택하여 이를 일식 업데이트 사이트로 추가합니다.그것은 당신에게 다발을 요청해야 합니다.엄청난 양의 이클립스 업데이트입니다. 수락해주시면 됩니다.

빌드 도우미 플러그인에 대한 구성이 작동했습니다.

그러나 대상 폴더는 주석 처리 자체에 사용하는 플러그인의 구성과 항상 같아야 합니다.

예를 들어 maven-discovery-discovery는 ${project 대상 폴더를 사용합니다.기본값으로 build.directory}/generated-directory/apt가 있습니다.생성된 소스 파일의 다른 대상을 원하는 경우 아래와 같이 태그로 설정할 수 있습니다.

<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>

여기 해결책이 있습니다.

  1. 마커 보기 열기(창 > 보기 표시)
  2. 오류 메시지를 마우스 오른쪽 버튼으로 클릭합니다.
  3. 빠른 수정 선택
  4. 마침을 클릭]

언급URL : https://stackoverflow.com/questions/7160006/m2e-and-having-maven-generated-source-folders-as-eclipse-source-folders

반응형