ok so I got the local maven repo working by using this:
def localMavenRepo = new File('c:/work/.m2/repository').toURL().toString()
repositories {
// Use local Maven repo location. We don't need this if we only want to
install
// an artifact, but we do need it if we want to use dependencies from
the local
// repository.
mavenRepo urls: localMavenRepo
}
thanks
craig
On Sat, Jan 23, 2010 at 3:52 PM, Craig Wickesser <[email protected]>wrote:
> Ok, well I added a new dependency (itextpdf) and now I can't even build.
> Here's my build.gradle:
>
> usePlugin 'groovy'
> usePlugin 'maven' // Maven plugin to install artifact in local Maven repo.
>
> sourceCompatibility = '1.6'
> targetCompatibility = '1.6'
>
> manifest.mainAttributes("Main-Class" : "org.mindscratch.foo.ParseMain")
>
> // Project configuration:
> version = '1.0-SNAPSHOT'
> group = 'org.mindscratch.foo'
>
> // The following line is not necessary. Default the install tasks depends
> on the
> // jar.vb\ b
> // x,vbv dok2i303jk task, but this means no tests and checks are executed
> when we use the
> // install task. The following line makes the install tasks depend on the
> build task
> // and now all tests and checks are done before install is executed.
> install.dependsOn ':build'
>
> configurations {
> compile
> }
>
> dependencies {
> compile 'com.itextpdf:itextpdf:5.0.0'
> groovy 'org.codehaus.groovy:groovy:1.6.7' // group:name:version is a
> nice shortcut notation for dependencies.
> testCompile 'junit:junit:4.7'
> }
>
> def localMavenRepo = 'file://c:/work/.m2/repository'
> repositories {
> // Use local Maven repo location. We don't need this if we only want to
> install
> // an artifact, but we do need it if we want to use dependencies from
> the local
> // repository.
> mavenRepo urls: localMavenRepo
> mavenCentral() // Define Maven central repository to look for
> dependencies.
> }
>
> jar.doFirst {
> jar.manifest.mainAttributes('Class-Path': configurations.runtime.collect
> { it.name }.join(' '))
> }
>
> task listJars << {
> configurations.compile.each { File file -> println file.name }
> }
>
> ...I do have com.itextpdf:itextpdf:5.0.0 in my local maven repo, however,
> when I run "gradle build" I get:
>
> * What went wrong:
> Execution failed for task ':compileGroovy'.
> Cause: Could not resolve all dependencies for configuration 'compile':
> - unresolved dependency: com.itextpdf#itextpdf;5.0.0: not found
>
> ...clues?
>
>
> On Wed, Jan 20, 2010 at 10:31 PM, Adam Murdoch <[email protected]>wrote:
>
>>
>>
>> On 19/01/10 11:52 PM, Craig Wickesser wrote:
>>
>> I tried #3 but that gave me an error about another dependency
>> (org.objectweb.asm?? something like that).
>>
>>
>> Sounds like you didn't include all the jars in the -cp argument. Using -cp
>> *.jar as John suggested should work.
>>
>>
>> For option #2, how do I get gradle to build the class-path for me so I
>> don't have to manually copy/past JAR names in my gradle script?
>>
>>
>> You can do something like:
>>
>> jar.doFirst {
>> jar.manifest.mainAttributes('Class-Path':
>> configurations.runtime.collect { it.name }.join(' '))
>>
>> }
>>
>>
>>
>> On Mon, Jan 18, 2010 at 9:11 PM, Adam Murdoch <[email protected]>wrote:
>>
>>>
>>>
>>> On 19/01/10 12:48 PM, Craig Wickesser wrote:
>>>
>>> So I added the following to my build.gradle:
>>>
>>> task copyToLib(dependsOn: configurations.default.buildArtifacts, type:
>>>> Copy) {
>>>
>>> into('build/output/lib')
>>>
>>> from configurations.default
>>>
>>> from configurations.default.allArtifacts*.file
>>>
>>> }
>>>
>>>
>>> Then I ran:
>>> $ gradle build
>>> $ gradle copyToLib
>>>
>>> Next I tried to run the JAR...
>>> $ cd build\output\lib
>>> $ dir
>>>
>>> Directory of C:\work\projects\playground\mrhakibook\build\output\lib
>>>
>>> 01/18/2010 08:41 PM <DIR> .
>>> 01/18/2010 08:41 PM <DIR> ..
>>> 07/09/2008 03:04 PM 1,323,005 ant-1.7.1.jar
>>> 07/09/2008 03:04 PM 12,143 ant-launcher-1.7.1.jar
>>> 01/13/2007 01:28 AM 445,288 antlr-2.7.7.jar
>>> 08/27/2006 08:49 PM 34,832 asm-2.2.3.jar
>>> 08/27/2006 08:49 PM 17,977 asm-analysis-2.2.3.jar
>>> 08/27/2006 08:49 PM 16,248 asm-tree-2.2.3.jar
>>> 08/27/2006 08:49 PM 34,989 asm-util-2.2.3.jar
>>> 12/02/2009 07:11 AM 3,987,117 groovy-1.6.7.jar
>>> 02/22/2008 02:53 PM 87,325 jline-0.9.94.jar
>>> 03/03/2006 06:22 PM 120,640 junit-3.8.2.jar
>>> 01/18/2010 08:41 PM 30,589 foo-1.0-SNAPSHOT.jar
>>>
>>> $ java -jar foo-1.0-SNAPSHOT.jar
>>>
>>> and I get..
>>>
>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>>> groovy/lang/GroovyObject
>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>> at java.lang.ClassLoader.defineClass(Unknown Source)
>>> at java.security.SecureClassLoader.defineClass(Unknown Source)
>>> at java.net.URLClassLoader.defineClass(Unknown Source)
>>> at java.net.URLClassLoader.access$000(Unknown Source)
>>> at java.net.URLClassLoader$1.run(Unknown Source)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at java.net.URLClassLoader.findClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClass(Unknown Source)
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>>> Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
>>> at java.net.URLClassLoader$1.run(Unknown Source)
>>> at java.security.AccessController.doPrivileged(Native Method)
>>> at java.net.URLClassLoader.findClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClass(Unknown Source)
>>> at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClass(Unknown Source)
>>> at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>>> ... 12 more
>>> Could not find the main class: org.mindscratch.foo.ParseMain. Program
>>> will exit.
>>>
>>> I'm not sure why it can't find "GroovyObject"...the JAR is in the same
>>> directory as my "foo" jar.
>>>
>>> I tried this as well:
>>>
>>> $ java -cp . org.mindscratch.foo.ParseMain ....and I get:
>>>
>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>>> org/mindscratch/foo/ParseMain
>>> Caused by: java.lang.ClassNotFoundException:
>>> org.mindscratch.foo.ParseMain
>>> at java.net.URLClassLoader$1.run(Unknown Source)
>>>
>>> I did verify the ParseMain class does exist in my "foo" jar.
>>>
>>>
>>> By using -cp . you're asking the jvm to look for class files in the
>>> current directory. This doesn'twork because the classes are all packaged
>>> into jars. Instead, you want to ask it to look for class files in each of
>>> the jars in the current directory. Some ways you can do this:
>>>
>>> 1. Include each of the jar names in the argument to the -cp option, ie
>>> java -cp foo-1.0-SNAPSHOT.jar:groovy-1.6.7.jar:...
>>>
>>> 2. Include a 'Class-Path' attribute in the manifest of your jar which
>>> lists all of the jars, then you can run java -jar foo-1.0-SNAPSHOT.jar
>>>
>>> 3. Merge all of the jars together, as described in the cookbook, then you
>>> can run java -jar foo-1.0-SNAPSHOT.jar
>>>
>>>
>>>
>>> Thanks in advance.
>>> craig
>>>
>>> On Sun, Jan 17, 2010 at 6:27 PM, Adam Murdoch
>>> <[email protected]>wrote:
>>>
>>>>
>>>>
>>>> On 18/01/10 4:15 AM, Craig Wickesser wrote:
>>>>
>>>> I'm trying to get an executable JAR that contains groovy code that I can
>>>> run by doing a simple: java -jar myapp.jar
>>>>
>>>> Here's my build.gradle
>>>>
>>>> usePlugin 'groovy'
>>>> usePlugin 'maven' // Maven plugin to install artifact in local Maven
>>>> repo.
>>>>
>>>> sourceCompatibility = '1.6'
>>>> targetCompatibility = '1.6'
>>>>
>>>> manifest.mainAttributes("Main-Class" :
>>>> "org.mindscratch.foo.ParseMain")
>>>>
>>>> def localMavenRepo = 'file://' + new
>>>> File(System.getProperty('user.home'), '.m2/repository').absolutePath
>>>> repositories {
>>>> // Use local Maven repo location. We don't need this if we only want
>>>> to install
>>>> // an artifact, but we do need it if we want to use dependencies
>>>> from the local
>>>> // repository.
>>>> mavenRepo urls: localMavenRepo
>>>> }
>>>>
>>>> // Project configuration:
>>>> version = '1.0-SNAPSHOT'
>>>> group = 'org.mindscratch.foo'
>>>>
>>>> // The following line is not necessary. Default the install tasks
>>>> depends on the
>>>> // jar task, but this means no tests and checks are executed when we use
>>>> the
>>>> // install task. The following line makes the install tasks depend on
>>>> the build task
>>>> // and now all tests and checks are done before install is executed.
>>>> install.dependsOn ':build'
>>>>
>>>>
>>>> repositories {
>>>> mavenCentral() // Define Maven central repository to look for
>>>> dependencies.
>>>> }
>>>>
>>>> dependencies {
>>>> groovy 'org.codehaus.groovy:groovy:1.6.7' // group:name:version is
>>>> a nice shortcut notation for dependencies.
>>>> testCompile 'junit:junit:4.7'
>>>> }
>>>>
>>>>
>>>> task initProject(description: 'Initialize project directory
>>>> structure.') << {
>>>> // Default package to be created in each src dir.
>>>> def defaultPackage = 'org/mindscratch/foo'
>>>>
>>>> ['java', 'groovy', 'resources'].each {
>>>> // convention.sourceSets contains the directory structure
>>>> // for our Groovy project. So we use this struture
>>>> // and make a directory for each node.
>>>> convention.sourceSets.all."${it}".srcDirs*.each { dir ->
>>>> def newDir = new File(dir, defaultPackage)
>>>> logger.info "Creating directory $newDir" // gradle -i
>>>> shows this message.
>>>> newDir.mkdirs() // Create dir.
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>> I run:
>>>> $ gradle install -i
>>>> $ cd build/libs
>>>> $ java -jar foo-1.0-SNAPSHOT.jar
>>>>
>>>> ..doesn't work b/c the Groovy jar isn't on the classpath (or inside my
>>>> JAR). GUess what I need is a JAR that contians the Groovy jar inside of it
>>>> (maybe in a "lib" folder). Can you help?
>>>>
>>>>
>>>> The cookbook has some options for creating a JAR which contains its
>>>> compile or runtime dependencies:
>>>> http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar
>>>>
>>>> There's also a JIRA issue for making this easier:
>>>> http://jira.codehaus.org/browse/GRADLE-566
>>>>
>>>>
>>>> --
>>>> Adam Murdoch
>>>> Gradle Developerhttp://www.gradle.org
>>>>
>>>>
>>>
>>> --
>>> Adam Murdoch
>>> Gradle Developerhttp://www.gradle.org
>>>
>>>
>>
>> --
>> Adam Murdoch
>> Gradle Developerhttp://www.gradle.org
>>
>>
>