Maven 다 중 모듈 포장 에 부 딪 힌 문제 해결 방법 을 상세히 설명 합 니 다.

프로젝트 설명:springboot+springcloud+zookeeper+eureka+maven;다 중 모듈 다 중 모듈 의 분포 식 구조;
프로젝트 디 렉 터 리 구 조 는 다음 과 같다.
这里写图片描述  
부모 프로젝트 는 server 프로젝트 이 며,그 중 여러 개의 모듈 프로젝트 가 있 습 니 다.
1.독립 서브 프로젝트:db,model,quartz,redis,util,basecontroller;
2.독립 기능 모듈:dao,service,controller;
그 중에서 dao,service,controller 는 각각 db,model,quartz,redis,util,baseController 에 의존 하고 구체 적 인 의존 관 계 는 다음 과 같다.
这里写图片描述  
문제 설명:maven 포장 을 사용 할 때 포장 오류 가 발생 했 습 니 다.
오류 설명:
[WARNING] The requested profile "dev" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.13.RELEASE:repackage (default) on project axis-login-dao: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.13.RELEASE:repackage failed: Unable to find main class -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
해결 방안:이 오 류 는 mainclass 오 류 를 찾 을 수 없 기 때 문 입 니 다.어떤 사람 은 Maven 플러그 인 에 mainclass 를 직접 추가 하면 된다 고 했 습 니 다.그런데 제 가 걸 었 던 것 은 dao 층 의 가방 입 니 다.그 는 jar 입 니 다.실행 가능 한 프로그램 이 아니 기 때문에 문 제 는 어디 에 있 습 니까?이어서 아래 를 보 세 요.다음은 패키지 에 존재 하지 않 는 문제점 을 알려 드 리 겠 습 니 다.
[INFO] Compiling 5 source files to D:\-server\-dao\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR]/D:/-server/-login-dao/src/main/java/com//system/dao/RoleDaoMapper.java:[3,33]패키지 com.ccx.axis.system.model 이 존재 하지 않 습 니 다.
[ERROR]/D:/-server/login-dao/src/main/java/com//system/dao/RoleDaoMapper.java:[4,33]패키지 com.system.model 이 존재 하지 않 습 니 다.
이 문 제 는 이틀 동안 저 를 괴 롭 혔 습 니 다.그 자체 가 Maven 을 잘 모 르 기 때문에 이 기 회 를 틈 타 많이 알 게 되 었 습 니 다.만약 당신 도 비슷 한 문제 에 부 딪 혔 고 Maven 이 구축 한 생명 주 기 를 모른다 면 먼저 그 를 배 워 야 합 니 다.중요 한 것 은 세 번 말 해 야 합 니 다.Maven 이 구축 한 생명 주기!maven 구축 의 생명주기!maven 구축 의 생명주기!(링크 가 있 습 니 다https://www.jb51.net/article/127429.htm)
그리고 이 문 제 를 보 러 왔 습 니 다.저 는 아버지 와 같은 pom.xml 에 Maven 이 구축 한 플러그 인 을 추 가 했 습 니 다.

<plugins>
      <!--         -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!--       -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>1.5.13.RELEASE</version>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
인터넷 자료 에 따 르 면 프로그램 가방 을 찾 지 못 하 는 문 제 는 주로 Maven 의존 과 관련 된 것 입 니 다.저 는 모든 Maven 의존 도 를 잘 알 고 있 지만 구축 에 성공 하지 못 했 습 니 다.이 럴 때 소 란 스 러 운 조작 이 필요 합 니 다.예 를 들 어 제 로그 인 모듈 을 포장 할 때 하나하나 바 텀 네트워크 에서 포장 할 수 없습니다.가방 을 한꺼번에 다 싸 야 합 니 다.
우선 부모 클래스 의 pom.xml 의존 관 계 를 보십시오.
这里写图片描述  
*다음은 포인트!!!!!*
먼저 주의해 야 할 것 은 util,redis,model,db 는 독립 된 module 입 니 다.login-dao,login-service 는 모두 그 몇 개의 독립 된 module 에 의존 합 니 다.login-contrller 는 자체 적 으로 시작 류 를 가지 고 실행 할 수 있 습 니 다(상기 몇 개의 module 에 의존 해 야 합 니 다).login-contrller 의 pom 에 계 동 류 를 추가 해 야 합 니 다(그렇지 않 으 면 메 인 클래스(mainClass)오 류 를 찾 을 수 없습니다).
这里写图片描述  
이것 은 초기의 준비 작업 입 니 다.준비 가 끝 난 후에 아버지 류 에 대해 Maven 의 구축 작업 을 직접 합 니 다.먼저 clean 은 install 에 있 습 니 다.
这里写图片描述  
마지막 으로 완벽 하 게 해결!!
그리고 여러 module 프로젝트 maven 구축 시 주의해 야 할 문제 들 을 적 습 니 다.
1.만약 당신 의 프로젝트 에 jsp 가 있다 면 jar 가방 을 칠 수 없습니다.war 가방 을 해 야 합 니 다.jar 가방 을 하면 jsp 자원 을 찾 을 수 없 기 때 문 입 니 다.
2.프로젝트 가 모두 백 스테이지 코드 라면 부모 클래스 의 pom 에 대응 하 는 packaging 은 pom 이 고,하위 클래스 의 pom 의 packaging 은 jar 입 니 다.

<groupId>com.ccx</groupId>
  <artifactId>ccx-XXX-server</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--  project pom  :  jar, pom-->
  <packaging>pom</packaging>

<groupId>com.ccx</groupId>
  <artifactId>ccx-XXX-server</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--  project pom  :  jar, pom-->
  <packaging>pom</packaging>
3.모든 jar 가방 의 의존 도 를 부모 클래스 의 pom.xml 파일 에 추가 하지 마 십시오.하위 프로젝트 를 포장 할 때 maven 은 부모 클래스 pom.xml 에 있 는 모든 jar 가방 을 하위 클래스 의 jar 가방 에 넣 기 때문에 필요 하지 않 은 jar 가방 을 n 번 더 쳤 습 니 다.따라서 하나의 module 에 필요 한 jar 가방 을 해당 하 는 module 에 넣 고 모두 부모 프로젝트 의 pom.xml 에 넣 지 않 습 니 다.
4.jdk,maven,springboot 버 전 을 주의 하 십시오.저 는 현지 jdk 1.8,springboot 1.5.13,maven 3.6 입 니 다.환경 이 계속 되 어야 포장 에 오류 가 발생 하지 않 습 니 다.
5.위 에 나타 난 maven 포장 오류 에 대해 저 는 두 가지 생각 이 있 습 니 다.
프로젝트 현황:프로젝트 의 모든 jar 패키지 의존 은 부모 클래스 의 pom 에 추가 되 었 습 니 다.일반적으로 부모 클래스 pom 에 서 는 버 전 번호 문제 만 규정 하고 jar 패 키 지 를 부모 클래스 의 pom 에 추가 해 서 는 안 됩 니 다.또한 정상 적 인 상황 에서 포장 도 먼저 밑 에 있 는 가방 을 해 야 합 니 다.윗 층 에 있 는 가방 을 해 야 합 니 다.현재 제 프로젝트 현황 에 있어 서 맨 밑 에 있 는 가방 을 한 번 싸 면 아버지 pom 에 있 는 모든 jar 가방 이 들 어 갑 니 다.다시 인터넷 에 포장 할 때 아버지 pom 에 있 는 모든 jar 가방 이 다시 한 번 맞 을 것 입 니 다.그리고 맨 밑 에 있 는 module 도 포함 되 기 때문에 문제 가 생 길 수 있 습 니 다.틀림없이 포장 에 성공 하지 못 할 것 이다.
정확 한 방법 은 부모 pom 에서 jar 가방 에 의존 하 는 버 전 번호(버 전 정보 에 만 한정)를 규정 해 야 합 니 다.하위 모듈 은 어떤 jar 패키지 에 의존 하면 이 jar 패 키 지 를 하위 모듈 의 pom 파일 에 추가 합 니 다.포장 할 때 맨 밑 에 있 는 것 부터 하고 한 층 씩 인터넷 으로 포장 합 니 다.이러 면 내 문제 가 생기 지 않 을 거 야.
저 는 상기 두 가지 가 가장 중요 하 다 고 생각 합 니 다.만약 잘못 이 있 으 면 지적 해 주 십시오.and 교 류 를 환영 합 니 다.
Maven 다 중 모듈 포장 에 부 딪 힌 문제 해결 방법 에 대한 상세 한 설명 은 여기까지 입 니 다.Maven 다 중 모듈 포장 내용 에 대해 서 는 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기