gradle: добавление баночки в web-inf - PullRequest
4 голосов
/ 11 февраля 2011

Я создал сборку Gradle и добавил код java, scala, war, jetty и все работает нормально.



apply plugin: 'java'
apply plugin: 'scala'
apply plugin: 'war'
apply plugin: 'jetty'

List compileTime = [
                    "javax.servlet:servlet-api:2.4@jar",
                    "org.scalatra:scalatra_2.8.0:2.0.0.M2@jar",
                    "org.mortbay.jetty:jetty:6.1.22@jar",
                    "com.mongodb.casbah:casbah_2.8.0:2.0.2@jar",
                    "org.scala-lang:scala-library:2.8.1@jar"
            ]

List runTime = [
                    "org.scalatra:scalatra_2.8.0:2.0.0.M2@jar",
                    "com.mongodb.casbah:casbah_2.8.0:2.0.2@jar",
                    "org.scala-lang:scala-library:2.8.1@jar"
            ]

//                  "org.mortbay.jetty:servlet-api:2.5-20081211@jar",
 repositories {
    mavenCentral()
    mavenRepo urls: ["http://scala-tools.org/repo-releases","http://mirrors.ibiblio.org/pub/mirrors/maven2","http://repo1.maven.org/maven2","https://oss.sonatype.org/content/repositories/snapshots","https://oss.sonatype.org/content/repositories/releases"]
}

dependencies {
        scalaTools 'org.scala-lang:scala-compiler:2.8.1'
        scalaTools 'org.scala-lang:scala-library:2.8.1'
          compile compileTime
            runtime runTime
          testCompile "junit:junit:3.8.2"   
      } 

task myTask (type: War) {
  println configurations.runtime.collect
  println classpath()
 }

war {
   // from 'main/webapp' 
    webInf { from 'src/main/webapp/WEB-INF' }
  //  classpath classpath() /
    classpath configurations.runtime

    webXml = file('src/main/webapp/WEB-INF/web.xml') 
}

Мне нравится 1) Добавьте только необходимые банки.на войне, в приведенном выше коде я получаю баночки с джетти и сервлетом на моей войне.!

1 Ответ

11 голосов
/ 11 февраля 2011

Для зависимостей, которые не должны входить в War, используйте область "provideCompile" или "provideRuntime".

Некоторые замечания по вашему сценарию сборки:

  1. Вы не делаетедолжны поместить зависимости от пути к классу «времени выполнения», которые уже находятся по пути к классу «компиляции».Gradle делает это для вас.То же самое для «provideCompile» и «provideRuntime».
  2. У вас действительно есть зависимости компиляции от API сервлета и Jetty?(Может быть, это правда, просто интересно.)
  3. Вы используете "mavenRepo urls: ..." неправильно.Вам нужно перечислить репо один за другим.Для получения дополнительной информации см. 32.5.1 репозитории Maven в руководстве пользователя Gradle.
  4. Не уверен, почему вы везде используете "@jar".Это эффективно отключает транзитивное управление зависимостями.Возможно, результат 3.?
  5. Ваша конфигурация "war {...}" используется по умолчанию и может быть опущена.См. 23.6 Война в руководстве пользователя.
...