2014-05-03 22 views
8

Sto cercando di aggiungere il supporto Groovy a un progetto Java esistente in modo che io possa seemlessly compilare misto Java e codice Groovy utilizzando invokedynamic in modo che posso ottenere Java-like execution speed without needing to waste excessive amounts of time with verbose Java syntaxDependences Download da privato Amazon S3 Repository con Gradle

Dopo aver letto che il plugin gmaven non supporta più la compilazione -e che il plugin del compilatore eclisse groovy doesn't yet support invokedynamic, mi sono chiesto, perché dovrei continuare ad usare Maven se compila il codice Groovy che è inutilmente lento?

Di conseguenza, ho deciso di provare a scartare Maven per Gradle in modo da ottenere codice più veloce mentre eseguivo il porting di alcuni script di distribuzione Python su attività Gradle in modo da richiedere solo un codebase.

Ho alcune librerie memorizzate su un semplice repository maven protetto da password (per evitare di richiedere overkill aziendali come artefatto). Dopo aver fatto alcune ricerche di base, ho trovato che Gradle non ha il supporto integrato per l'aggiunta nella gestione delle dipendenze personalizzate come determinato da this stack overlow question e this support forums post.

Sono riuscito a trovare uno s3 plugin for gradle -ma non si occupa della gestione delle dipendenze.

Se l'intero punto di Gradle deve essere più flessibile di Maven e se lo scopo principale di un sistema di gestione/generazione delle dipendenze è gestire efficacemente le dipendenze da una varietà di fonti, sembra che la mancanza di supporto per i repository personalizzati sia un difetto di design significativo abbastanza significativo che rende ogni problema con Maven così pallido in confronto.

Tuttavia, è possibile che mi manca qualcosa, e ho già investito diverse ore di apprendimento Gradle -quindi ho pensato che avrei vedere se c'è qualche modo ragionevole per emulare la gestione delle dipendenze per questi s3 dipendenze fino a quando gli sviluppatori Gradle risolvere questo problema critico. Altrimenti dovrò concludere che sto meglio usando Maven e tollerando il codice Groovy più lento fino a quando il plugin del compilatore supporta invokedynamic.

Fondamentalmente ho bisogno di una soluzione che fa le seguenti:

  1. Download dipendenze e le dipendenze transitive alla cache Gradle
  2. Non richiede me per codificare il percorso per la cache Gradle -così che la mia generazione lo script è indipendente dalla piattaforma.
  3. Non scarica nuovamente le dipendenze se sono già nella cache.
  4. Funziona con un progetto a più moduli.

Tuttavia, non riesco a trovare nulla nella documentazione che avrebbe nemmeno darmi un indizio su dove cominciare:

risposta

0

non è necessario alcun supporto repository personalizzati per fare questo lavoro. Basta dichiarare un repository maven con l'URL corretto. Se il repository funziona quando usato da Maven, funzionerà anche con Gradle. (Il caricamento potrebbe essere diverso)

+0

È un repository privato s3, quindi devo usare il protocollo s3: //. Funziona solo in Maven attraverso una specifica estensione di generazione: org.springframework.build.aws org.springframework.build.aws.maven 3.0.0.RELEASE THX1138

+0

Quindi hai tralasciato la parte più importante delle informazioni. :-) AFAIK, al momento non è possibile aggiungere il supporto del repository personalizzato a Gradle tramite un plugin. PS: Non darei per scontato che invokedynamic Groovy sia molto più veloce di Groovy standard sulle attuali JVM. –

+0

Il supporto è in lavorazione o è probabile che non sarà disponibile per anni? – THX1138

2

Gradle 2.4 has native support for S3 repositories. Sia il download delle dipendenze e gli artefatti di pubblicazione.

Per scaricare con le credenziali di IAM (parafrasato dal link qui sopra):

repositories { 
    maven { 
     url "s3://someS3Bucket/path/to/repo/root" 
     credentials(AwsCredentials) { 
      accessKey 'access key' 
      secretKey 'secret key' 
     } 
    } 
} 

Poi specificare le dipendenze, come al solito.

+1

Lo sto usando esattamente in questo modo e, come bonus, distribuisco anche artefatti (installazione) su S3: http://sm4.github.io/build/2015/07/16/hosting-a-maven-repository-in -amazon-s3/ – sm4

+2

Questo link è per le ultime note di rilascio, non 2.4. Ecco il link corretto: https://docs.gradle.org/2.4/release-notes.html#support-for-amazon-web-services-s3-backed-repositories –

0

È possibile utilizzare S3 e http

repositories { 
    mavenCentral() 
    ivy { 
     url "https://s3-eu-west-1.amazonaws.com/my-bucket" 
     layout "pattern", { 
      artifact "[artifact]-[revision].[ext]" 
      m2compatible = true 
     } 
    } 
} 

Nome il vaso in S3 per citarne-rev.jar (Joda-tempo-3.2.jar) nel mio secchio. Carica anche un file pom. E in S3 do tutti i permessi per scaricare il barattolo e il pom.