developer tip

생성 된 소스 폴더에서 Intellij를 사용할 수 없습니다.

copycodes 2020. 11. 3. 08:17
반응형

생성 된 소스 폴더에서 Intellij를 사용할 수 없습니다.


관련 질문 jaxb2-maven-plugin을 사용하여 생성 된 Java 소스 코드로 디렉토리를 자동으로 추가하도록 IntelliJ IDEA 및 / 또는 Maven을 구성하는 방법은 무엇입니까?

소스를 생성하는 사용자 지정 플러그인이 있습니다 target/generated-sources(여기에 도구 이름 없음). 그래서 나는 target/generated-sources/com/mycompany... 등과 같은 소스를 얻습니다 .

이 형식은 전혀 변경할 수 없으므로 Intellij를 소스 폴더로 추가하도록 구성 할 수 있습니다. 현재 Intellij가 target/generated-sources/com소스 폴더로 추가 된 것을 볼 수 있습니다 .

플러그인을 구성 할 수있는 옵션이 없습니다.

업데이트 1 : 생성 된 소스를 도구 이름 폴더에 넣어야한다는 사실에 동의하지 않습니다. 좋은 관습 일 수 있지만 발전기가 하나만 있으면 거기에 둘 필요가 없습니까? 다시 말하지만, 내 pom.xml 에는 소스 폴더로 취급되어야 resources함을 명확하게 나타내는 섹션이 target/generated-sources있습니다. 이것은 Eclipse에서 완벽하게 작동하므로 Intellij가 내 설정을 존중하지 않는 이유를 모르겠습니다.

TL; DR-> Intellij 가 클래스 경로 에 추가하는 과도하게 많은 target/generated-sources리소스 섹션을 넣을 때 ?pom.xmltarget/generated-sources/com


프로젝트 구조를 변경하여 해당 폴더를 "소스"디렉토리로 추가 할 수 있습니다.

프로젝트 구조 → 모듈 →generated-sources 폴더를 클릭하고 폴더로 만듭니다 sources.

또는:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <id>test</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${basedir}/target/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

Maven (SpringBoot 응용 프로그램) 솔루션을 사용하고 있습니다.

  1. 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭
  2. Maven 선택
  3. 소스 생성 및 폴더 업데이트를 선택합니다.

그런 다음 Intellij는 생성 된 소스를 프로젝트로 자동으로 가져옵니다.


gradle을 사용하면 gradle 설정을 새로 고칠 때마다 프로젝트 설정이 지워집니다. 대신 build.gradle에 다음 줄 (또는 유사)을 추가해야합니다. kotlin을 사용하고 있습니다.

sourceSets {
    main {
        java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}

수정

이동 프로젝트 구조 - 모듈 - 소스 폴더 와를 찾을 target/generated-sources/antlr4/com/mycompany- 클릭 편집 속성을 설정하고 패키지 접두사 로에게 com.mycompany.

이것이 바로 소스 디렉토리에 패키지 접두사설정할 수있는 이유 입니다.


여기에 다르지만 관련된 문제


그 플러그인을 작성한 사람은 큰 시간을 낭비했습니다. 그것은 그것을하는 방법이 아닙니다!

모든 해결 방법은 거대한 해킹이 될 것입니다. 플러그인 개발자가 자신의 버그를 인식하도록합니다.

죄송합니다. 그게 유일한 방법입니다.


좋아, 플러그인 실행 직후에 antrun 플러그인을 사용하여 디렉토리를 다른 곳으로 이동하십시오.

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>process-sources</phase>
        <configuration>
          <target>
            <move todir="${project.build.directory}/generated-sources/toolname/com"
                  overwrite="true">
                <fileset dir="${project.build.directory}/generated-sources/com"/>
            </move>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
</plugin>

이 예제에서는 toolname코드를 생성 한 플러그인을 고유하게 식별 com하고 생성 된 패키지의 루트를 나타내는 모든 것으로 대체되어야 합니다. 패키지 루트가 여러 개인 경우 여러 <move>작업이 필요할 수 있습니다.

그러나 플러그인이 폴더를 소스 폴더로 추가하면 망가집니다.


폴더를 이동하는 소스 생성 단계에 단계를 추가 할 수 있습니까?


I had the same issue with Eclipse a couple of months ago when importing my project. Now I had the same with intelliJ. Here is how someone helped me to solve this in IntelliJ:

Menu => View => Tools windows => Maven Project In the spring_user value => Run Configuration, choose clean install. This should do a clean install and after this you should be able to see the classes enter image description here

참고URL : https://stackoverflow.com/questions/5170620/unable-to-use-intellij-with-a-generated-sources-folder

반응형