Основной класс не найден ошибка при переносе из Maven в Gradle - PullRequest
0 голосов
/ 29 мая 2018

Я переношу проект maven в gradle в STS.

Мой pom.xml:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.myPack</groupId>
    <artifactId>sdk-devproxy</artifactId>
    <version>0.0.1-RELEASE</version>
    <packaging>jar</packaging>

    <name>sdk-devproxy</name>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.5.10.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-parent</artifactId>
                <version>Edgware.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.3.0</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>sdk-devproxy</finalName>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.myPack.devproxy.DevProxyApp</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

        </plugins>
    </build>
</project>

Я использовал команду автоматического преобразования maven в gradle "gardle init", и яполучил ниже build.gradle.

    apply plugin: 'java'
apply plugin: 'maven'

group = 'com.myPack'
version = '0.0.1-RELEASE'

description = """sdk-devproxy"""

sourceCompatibility = 1.8
targetCompatibility = 1.8



repositories {

     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-oauth2', version:'1.2.2.RELEASE'
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-zuul', version:'1.4.4.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.5.10.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j', version:'1.3.8.RELEASE'
    compile group: 'com.auth0', name: 'java-jwt', version:'3.3.0'
}

Поскольку эта сборка прошла успешно, но пока я запускаю приложение весенней загрузки, оно дает

    Error: Could not find or load main class com.myPack.mindsphere.devproxy.DevProxyApp

Я попытался обновить, пересобрать, обновить проект gradleи т.д. Я также указал имя основного класса, как показано ниже:

    jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'com.myPack.mindsphere.devproxy.DevProxyApp'
    )
  }
}

В чем может быть проблема:

  • проблема с плагином или упаковкой?
  • совместимость с jarвопрос?
  • или что-то еще?

1 Ответ

0 голосов
/ 29 мая 2018

Вы пытались использовать:

  • ./gradlew bootRepackage или ./gradlew bootJar для генерации исполняемого jar
  • ./gradlew bootRun для запуска

описаносогласно

https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/gradle-plugin/reference/html/

Если вы используете версию Gradle Gradle 3,4 или более поздней версии, которая использует задачу bootJar вместо bootRepackage согласно последнейдокументация https://spring.io/blog/2017/04/05/spring-boot-s-new-gradle-plugin

Задача bootRepackage была заменена задачами bootJar и bootWar для создания исполняемых jar и wars соответственно.Обе задачи расширяют эквивалентную стандартную задачу Gradle jar или war, предоставляя вам доступ ко всем обычным параметрам конфигурации и поведению.

Текущая конфигурация для вашего приложения:

  1. Обновите файл сборки следующим образом:

build.gradle

apply plugin: 'java'
apply plugin: 'maven'
//apply plugin: 'io.spring.dependency-management'

group = 'com.myPack'
version = '0.0.1-RELEASE'

description = """sdk-devproxy"""

sourceCompatibility = 1.8
targetCompatibility = 1.8

buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath(
          "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'org.springframework.boot'

repositories {

     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-oauth2', version:'1.2.2.RELEASE'
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-zuul', version:'1.4.4.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.5.10.RELEASE'
    //compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j', version:'1.3.8.RELEASE'
    compile group: 'com.auth0', name: 'java-jwt', version:'3.3.0'
}

bootJar {
    mainClassName = 'com.myPack.mindsphere.devproy.DevProxyApp'
}

Постройте банку, используя ниже.Это сгенерирует sdk-devproxy-0.0.1-RELEASE.jar в каталоге build / libs вашего проекта.

сборка Gradle

Запустите приложение, используя:

gradlew bootRun

...