2016-10-31 2 views
0

하나의 프로젝트에 여러 개의 메인 클래스 파일이 있습니다. 내 IDE (intelij)에서 프로젝트를 컴파일하고 실행할 수는 있지만 gradle로 이슈 출력하는 방법을 알 수는 없습니다 여기 내가 뭘하려 :gradle을 사용하여 jar 파일을 출력 할 수 없습니다

buildscript { 
    repositories { 
     jcenter() 
     maven { 
      url 'https://plugins.gradle.org/m2/' 
     } 
    } 
    dependencies { 
     // Add this line 
     classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1" 
     classpath 'gradle.plugin.edu.sc.seis.gradle:launch4j:1.6.2' 
    } 
} 


group 'polisotinserter' 
version '1.0.0' 

// Apply the java plugin to add support for Java 
apply plugin: 'java' 
apply plugin: 'com.jfrog.artifactory' 
apply plugin: 'maven-publish' 
apply plugin: 'idea' 
apply plugin: 'edu.sc.seis.launch4j' 
sourceCompatibility = 1.8 

repositories { 
    jcenter() 
    maven { 
     url 'https://artifactory.lyoko.pw:443/libs-release-local' 
    } 
} 

dependencies { 
    compile group: 'com.github.axet', name: 'lookup', version: '0.1.30' 
    compile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1' 
    compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1' 
    compile "org.jsoup:jsoup:1.8.3" 
    compile group: 'javax.mail', name: 'mail', version: '1.4.7' 

    compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator') 
    compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 
    compile group: 'org.json', name: 'json', version: '20160810' 


    compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0') 
    compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0') 
    compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
    compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 

} 

subprojects { 
    apply plugin: 'java' 
    repositories { 
     jcenter() 
     maven { 
      url 'https://artifactory.lyoko.pw:443/libs-release-local' 
      credentials { 
       username = "vasilevich" 
       password = "APkgGZjFzEM6Kp1yj1Be3fyrKW" 
      } 
     } 
    } 
    sourceSets { 
     main { 
      java { 
       srcDir 'src/' 
      } 
     } 
    } 
    dependencies { 
     compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
     compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 
    } 
} 


project(':CGFetcher') { 
    dependencies { 
     compile "org.jsoup:jsoup:1.8.3" 
     compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 
    } 
    task assembleRelease(type: Jar) { 
     classifier = 'release' 
     manifest { 
      attributes 'Implementation-Title': "CGFetcher", 
        'Implementation-Version': project.version, 
        'Main-Class': 'gui.CGGuiMain' 
     } 
     baseName = "CGFetcher" 
     from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
     with jar 
    } 
    artifacts { 
     archives assembleRelease 
    } 
} 

나는이

gradle build 

을 사용하여 실행 한 후 나는 polisotinserter-1.0.0.jar 이라고 빌드/libs와 폴더에 하나 개의 항아리가이 unexcpected입니다 얻을 , 게다가 그 항아리 프로젝트() 지시문에 설정 한 매니페스트가 없습니다.

몇 가지 테스트를 마치면 project() 지시문이 전혀 실행되지 않아 여기에서 어디로 가야할 지 혼란 스럽나요? 어떻게해야할까요?

지시어를 묻는 방법은 무엇입니까? 관심을 가져 주셔서 감사합니다.

답변

0

좋아, 프로젝트 루트에 나타나지 않아서, 내가 gradle 빌드를 실행할 때 하위 폴더 CGFetcher도 생성됩니다. 차례로이 빌드 폴더와 관련 jar 파일이 생성되었습니다.

buildscript { 
    repositories { 
     jcenter() 
     maven { 
      url 'https://plugins.gradle.org/m2/' 
     } 
    } 
    dependencies { 
     // Add this line 
     classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1" 
     classpath 'gradle.plugin.edu.sc.seis.gradle:launch4j:1.6.2' 
    } 
} 


group 'polisotinserter' 
version '1.0.0' 

// Apply the java plugin to add support for Java 
apply plugin: 'java' 
apply plugin: 'com.jfrog.artifactory' 
apply plugin: 'maven-publish' 
apply plugin: 'idea' 
apply plugin: 'edu.sc.seis.launch4j' 
sourceCompatibility = 1.8 

repositories { 
    jcenter() 
    maven { 
     url 'https://artifactory.lyoko.pw:443/libs-release-local' 
    } 
} 

dependencies { 
    compile group: 'com.github.axet', name: 'lookup', version: '0.1.30' 
    compile group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1' 
    compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1' 
    compile "org.jsoup:jsoup:1.8.3" 
    compile group: 'javax.mail', name: 'mail', version: '1.4.7' 

    compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator') 
    compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 
    compile group: 'org.json', name: 'json', version: '20160810' 


    compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0') 
    compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0') 
    compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
    compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 

} 
sourceSets { 
    main { 
     java { 
      srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath() 
     } 
     resources { 
      srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath() 
     } 
    } 
} 

subprojects { 
    apply plugin: 'java' 
    repositories { 
     jcenter() 
     maven { 
      url 'https://artifactory.lyoko.pw:443/libs-release-local' 
      credentials { 
       username = "vasilevich" 
       password = "APkgGZjFzEM6Kp1yj1Be3fyrKW" 
      } 
     } 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath() 
      } 
      resources { 
       srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath() 
      } 
     } 
    } 
    dependencies { 
     compile group: 'com.github.axet', name: 'lookup', version: '0.1.30' 

     compile "org.jsoup:jsoup:1.8.3" 
     compile group: 'javax.mail', name: 'mail', version: '1.4.7' 

     compile(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator') 
     compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 
     compile group: 'org.json', name: 'json', version: '20160810' 


     compile(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0') 
     compile(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0') 
     compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
     compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 


    } 
} 

project(':CGFetcher') { 

    task assembleRelease(type: Jar) { 
     classifier = 'release' 
     manifest { 
      attributes 'Implementation-Title': "CGFetcher", 
        'Implementation-Version': project.version, 
        'Main-Class': 'gui.CGGuiMain' 
     } 
     baseName = "CGFetcher" 
     from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
     with jar 
    } 
    artifacts { 
     archives assembleRelease 
    } 
} 

주의 :이 루트 소스 코드를 사용하는 프로젝트를 알려줍니다

sourceSets { 
     main { 
      java { 
       srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath() 
      } 
      resources { 
       srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath() 
      } 
     } 
    } 

을 는 또한 내가이 일을했다 그래서 루트 프로젝트의 소스를 사용하지 않는 것으로 나타났습니다. 그러나 새로운 문제가 발생했습니다 다른 프로젝트마다 다른 종속성을 만드는 방법을 모르겠지만 클래스가 포함되어 있기 때문에 gradble이 모든 종속성을 사용하도록 강요하는 것처럼 보입니다. . 편집 :

subprojects { 
    apply plugin: 'java' 
    repositories { 
     jcenter() 
     maven { 
      url 'https://artifactory.lyoko.pw:443/libs-release-local' 
      credentials { 
       username = "vasilevich" 
       password = "APkgGZjFzEM6Kp1yj1Be3fyrKW" 
      } 
     } 
    } 

    sourceSets { 
     main { 
      java { 
       srcDir new File(rootProject.projectDir, "src/main/java").getAbsolutePath() 
      } 
      resources { 
       srcDir new File(rootProject.projectDir, "src/main/resources").getAbsolutePath() 
      } 
     } 
    } 
    dependencies { 
     compileOnly group: 'com.github.axet', name: 'lookup', version: '0.1.30' 
     compileOnly group: 'org.seleniumhq.selenium', name: 'selenium-support', version: '3.0.1' 
     compileOnly group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.0.1' 
     compileOnly group: 'javax.mail', name: 'mail', version: '1.4.7' 
     compileOnly(group: 'EnglishToHebrewTranslicirator', name: 'EnglishToHebrewTranslicirator', version: 'EnglishToHebrewTranslicirator') 
     compileOnly group: 'org.json', name: 'json', version: '20160810' 
     compileOnly(group: 'AbstractConnectionApi', name: 'AbstractConnectionApi', version: '1.0.0') 
     compileOnly(group: 'sjxlsx-custom', name: 'sjxlsx-custom', version: '1.0.0') 
     compileOnly "org.jsoup:jsoup:1.8.3" 
     compileOnly(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
     compileOnly(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 
     compileOnly group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 

    } 
} 

project(':CGFetcher') { 
    dependencies { 
     compile "org.jsoup:jsoup:1.8.3" 
     compile(group: 'programupdater', name: 'Programs-Updater', version: '1.0.0') 
     compile(group: 'com.intellij', name: 'forms_rt', version: '7.0.3+') 
     compile group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' 

    } 
    task assembleRelease(type: Jar) { 
     classifier = 'release' 
     manifest { 
      attributes 'Implementation-Title': "CGFetcher", 
        'Implementation-Version': project.version, 
        'Main-Class': 'gui.CGGuiMain' 
     } 
     baseName = "CGFetcher" 
     from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
     with jar 
    } 
    artifacts { 
     archives assembleRelease 
    } 
} 

이 결과 : 좋아 나는 하나 너무 simpley이 를 (이전 Gradle을 버전에서 제공) 및 실제 프로젝트에 여기 예입니다 "컴파일"을 추가 모든 하위 프로젝트를 compileOnly을 줄 것으로 생각 오류가없고 결과로 생기는 항아리는 그만큼 작습니다.

관련 문제