programing

올바른 폴더 경로로 pom.xml의 mainClass를 추가할 수 있습니다.

megabox 2023. 10. 6. 21:01
반응형

올바른 폴더 경로로 pom.xml의 mainClass를 추가할 수 있습니다.

제가 만든 프로젝트로 작업항 파일을 받고 싶습니다.

빌드 부분은 다음과 같습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.14</version>
            <dependencies>
                <dependency>
                    <groupId>com.puppycrawl.tools</groupId>
                    <artifactId>checkstyle</artifactId>
                    <version>6.4.1</version>
                </dependency>
            </dependencies>
            <configuration>
                <consoleOutput>true</consoleOutput>
                <configLocation>${basedir}/src/test/resources/checkstyle_swt1.xml</configLocation>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptor>src/assembly/src.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addClasspath>true</addClasspath>
                            <mainClass>org.jis.Main</mainClass>                                
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

그래서 지금 제 문제는 메인 클래스를 제 pom.xml로, 나중에 jar 파일로 제대로 구현하는 방법을 모른다는 것입니다.폴더 구조는 src/main/java/org/jis/main.java이지만 다음 행을 추가하면 됩니다.

<mainClass>src.main.java.org.jis.Main</mainClass>

동작되지 않습니다.

의 주 , 를 .src/main/java 자바 파일에 있는 패키지 선언문을 보세요.를 들면,면,package org.jis;합니다.합니다. 말로 하자면면일 입니다.org.jis.Main.

maven-compiler-plugin 대신 maven-jar-plugin을 구성해야 합니다.병마개는 매니페스트를 포장하고 만드는 역할을 하는 것입니다.MF.

출처: http://maven.apache.org/shared/maven-archiver/examples/classpath.html

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <!-- Here come other details
        ...
        -->
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
        </configuration>
        <!-- Here come other details
        ...
        -->
      </plugin>
    </plugins>
  </build>

스프링부팅 어플리케이션이라면 아래와 같이 언급할 수 있습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.test.MainClass</mainClass>
            </configuration>                   
        </plugin>
    </plugins>
</build>

기본적으로 메이븐은 프로젝트를 구축하기 위해 수행되는 각 작업에 대한 메이븐 플러그인 모음을 가진 프레임워크입니다.

각 빌드 단계는 프로젝트 설명 POM(Project Object Model)을 사용하여 해당 메이븐 플러그인에 의해 수행됩니다.

그래서 maven-compiler plugin은 단지 프로젝트를 컴파일할 책임이 있고 매니페스트 파일은 만들지 않습니다.

maven-jar-plugin는 프로젝트의 매니페스트 파일을 만드는 일을 맡고 있습니다.

일을 할 수 있는 믿을 수 없을 정도로 간단한 예를 얻으려고 했던 것만큼 좌절했던 사람들을 위해 이것을 여기에 남겨두는 것입니다.

문제는 메이븐 병 아카이브에 잘못된 정보가 캐싱되어 있기 때문에 적절한 메인 클래스를 제공하는 경우(또는 제 경우에는 메이븐 버전 및 설정을 실제로 사용할 필요가 없습니다)입니다.

만약 당신이 IntelliJ를 사용하고 있다면 "target" 디렉토리를 날려버리도록 시도해보세요.예를 들어 "target" 디렉토리는 기본값인 "target" 디렉토리에 병을 배치합니다.

주 클래스의 정규화된 이름을 사용해야 합니다.

<mainClass>org.jis.Main</mainClass>

질문 후 시간이 좀 지난 것 같지만, 제가 도달한 해결책을 앞으로 읽어보도록 하겠습니다.

Intel JIDE에서 메이븐 프로젝트를 사용하고 있습니다. 운영 체제에서 복사한 전체 경로를 사용하더라도 다음과 같습니다.C:\Users\Rogerio\Desktop\Script\src\main\java\Controller\MainClass.java, .java 유무 또는 com.src 시도...approach main class를 찾을 수 없습니다. 내 응용프로그램을 위한 jar 파일을 만드는 중입니다.

해결책은 다음과 같이 maven-jar 플러그인의 mainClass 태그 안에 CDATA 태그를 넣는 것이었습니다.

내 파일 구조:

[IntelliJ의 디렉토리 이미지m 구조][1][1]: https://i.stack.imgur.com/LHCWc.jpg

pom.xml의 maven-jar 플러그인 안에서:

`<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass><![CDATA[Controller.MainClass]]></mainClass>
                    </manifest>
                </archive>
            </configuration>

`

Spring Boot Application을 사용하는 경우.pom.xml에서 아래를 추가합니다.

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

MANEFASE의 Main-Class 항목이 추가됩니다.MF파일.

언급URL : https://stackoverflow.com/questions/29920434/maven-adding-mainclass-in-pom-xml-with-the-right-folder-path

반응형