2016-02-08 4 views
0

Я новичок в градиенте и пытаюсь преобразовать свой POM в gradle.build. Я конвертирую часть зависимостей и теперь конвертирую часть плагина. Я следующий в моем POMконвертировать maven jar и копировать ресурсы плагина в gradle

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>${maven-dependency-plugin.version}</version> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <includeGroupIds> 
        junit, org.apache.logging.log4j, org.springframework, aopalliance, org.springframework.data, javax.inject, 
         org.hibernate, javax.el, com.microsoft.sqlserver, org.apache.commons, com.jcraft, com.sun.mail, 
         org.apache.velocity, commons-lang, commons-logging, commons-collections, org.jboss.logging, 
         org.jboss, org.javassist, dom4j, javax.transaction 
       </includeGroupIds> 
       <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>false</overWriteSnapshots> 
       <overWriteIfNewer>true</overWriteIfNewer> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>${maven-jar-plugin.version}</version> 
    <configuration> 
     <excludes> 
      <exclude>**/*.properties</exclude> 
      <exclude>**/*.xml</exclude> 
      <exclude>**/*.vm</exclude> 
      <exclude>**/*.txt</exclude> 
     </excludes> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>dependency-jars/</classpathPrefix> 
      <mainClass>com.softech.ls360.integration.BatchImport</mainClass> 
       </manifest> 
      <manifestEntries> 
       <Class-Path>conf/</Class-Path> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <phase>install</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/conf</outputDirectory> 
       <resources> 
        <resource> 
         <directory>src/main/resources</directory> 
         <includes> 
          <include>**/*.properties</include> 
          <include>**/*.xml</include> 
          <include>**/*.vm</include> 
          <include>**/*.txt</include> 
         </includes> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Когда я запустил этот POM я получил структуру, как этого

Project structure

dependency-jars folder

conf folder

Теперь я попытался его следующим с задачей градиентной банки

apply plugin: 'application' // implicitly apply java and distribution plugin 
apply plugin: 'eclipse' 

sourceCompatibility = 1.8 
targetCompatibility = sourceCompatibility 
mainClassName = "com.softech.ls360.integration.BatchImport" 
version = '1.0' 

ext { 
    log4jGroupId = "org.apache.logging.log4j" 
    springFrameworkGroupId = "org.springframework" 
    springFrameworkVersion = "4.2.4.RELEASE" 
    junitVersion = "4.12" 
    .... 
} 

dependencies { 
    compile group: log4jGroupId, name: 'log4j-api', version: log4jVersion 
    .... 
    runtime group: 'org.jboss.logging', name: 'jboss-logging', version: jbossLoggingVersion 
    .... 
    testCompile group: 'junit', name: 'junit', version: junitVersion 
} 

jar { 

    // Keep jar clean: 
    exclude '**/*.properties', '**/*.xml', '**/*.vm', '**/*.txt' 

    //from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    manifest { 
     attributes ('Implementation-Version': version, 
      'Main-Class': "$mainClassName", 
      'Class-Path': "conf/" + " " + configurations.runtime.files.collect {"dependency-jars/$it.name" }.join(' ') 
     ) 
    } 
} 

Тогда я получил следующую баночку

enter image description here

Это генерировать правильный путь класса в банке. Но build/libs/ папка содержит только банку, dependency-jars и conf папки в ней. Как я могу создать эти папки, поэтому, когда я запускаю jar задачи, он создает jar в папке build/libs/, а также создает папку dependency-jars со всеми банками в ней. И conf папка в build/libs, со всеми .propeties, .xml, .vm, .txt файлами из src/main/resources/ папка.

Благодаря

ответ

0

HHMM Я попытался следующие, и она работала. Я не знаю, насколько хорошо этот подход. Но если у кого-то есть лучший способ сделать это, пожалуйста, напишите ответ.

.... 
task wrapper(type: Wrapper) { 
    gradleVersion = '2.10' 
} 

task copyJars(type: Copy) { 
    from configurations.runtime 
    into "$buildDir/libs/dependency-jars" 
} 

task copyConfigurationFiles(type: Copy) { 
    description 'Copies the configurations files src/main/resources directory (from) to the target directory(into).' 
    from "src/main/resources" 
    into "$buildDir/libs/conf" 
    include '**/*.properties', '**/*.xml', '**/*.vm', '**/*.txt' 
} 

task copyFiles(dependsOn: [copyJars, copyConfigurationFiles]) 

jar { 

    dependsOn copyFiles 

    // Keep jar clean: 
    exclude '**/*.properties', '**/*.xml', '**/*.vm', '**/*.txt' 

    manifest { 
     attributes ('Implementation-Version': version, 
      'Main-Class': "$mainClassName", 
      'Class-Path': "conf/" + " " + configurations.runtime.files.collect {"dependency-jars/$it.name" }.join(' ') 
     ) 
    } 
} 

После этого я просто запускаю контейнер задач. И он создал банку, а также папку с зависимостями-jars со всеми банками в ней, а также папку conf со всеми конфигурационными файлами в ней. Как и когда я сделал maven install

Thanks

Смежные вопросы