2010/7/25 Adam Murdoch <[email protected]>

>  On 24/07/10 11:02 PM, Levi Hoogenberg wrote:
>
> Isn't this a transitivity issue? You don't have slf4j-api in your
> dependency list and I think you're expecting Gradle to pick it up from
> slf4j-log4j. AFAIK, it won't.
>
>
> I think this is exactly what it is. In 0.9-preview-3 we made the compile
> configuration transitive, but forgot to change testCompile. It's been since
> fixed so that compile and testCompile are both transitive (for good or bad).
>
> You can change testCompile to be transitive very easily:
>
> configurations.testCompile.transitive = true
>
> But, it might be better to add slf4j-api as a dependency, seeing as it
> actually is a dependency of your code.
>
>
>
>
> On Fri, Jul 23, 2010 at 9:17 PM, Dariusz Ludera 
> <[email protected]>wrote:
>
>>
>>
>> 2010/7/23 Jason Porter <[email protected]>
>>
>>>  On Fri, Jul 23, 2010 at 10:46, Dariusz Ludera <[email protected]>
>>> wrote:
>>> >
>>> >
>>> > 2010/7/23 Jason Porter <[email protected]>
>>> >>
>>> >> On Fri, Jul 23, 2010 at 05:03, Dariusz Ludera <
>>> [email protected]>
>>> >> wrote:
>>> >> > Hi!
>>> >> >
>>> >> > First of all I'd like to say that I'm newbie in gradle. Secondly,
>>> I'd
>>> >> > like
>>> >> > to use dependencies for example:
>>> >> >
>>> >> > compile 'log4j:log4j:1.2.16'
>>> >> > compile 'org.slf4j:slf4j-log4j12:1.6.1'
>>> >> >
>>> >> > to be avialable in testCompile scope. How can I declare it in my
>>> >> > build.gradle script?
>>> >> >
>>> >> > I want to use classes from this libraries in /src/main/java and
>>> >> > /src/test/java, but when I use it in my test classes, while
>>> testCompile
>>> >> > task
>>> >> > execution I get an error that packages org.slf4j and log4j doesn't
>>> >> > exist, so
>>> >> > gradle doesn't include libraries. I've got Maven pom.xml configured
>>> the
>>> >> > same
>>> >> > way as build.gradle and there my tests work correctly.
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Regards,
>>> >> > Darek
>>> >> >
>>> >>
>>> >> Just add it as testCompile as well, though you shouldn't have to.
>>> >> testCompile should be inheriting from compile.  Which version of
>>> >> gradle are you using?
>>> >>
>>> >> --
>>> >> Jason Porter
>>> >> http://lightguard-jp.blogspot.com
>>> >> http://twitter.com/lightguardjp
>>> >>
>>> >> Software Engineer
>>> >> Open Source Advocate
>>> >>
>>> >> PGP key id: 926CCFF5
>>> >> PGP key available at: keyserver.net, pgp.mit.edu
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> To unsubscribe from this list, please visit:
>>> >>
>>> >>    http://xircles.codehaus.org/manage_email
>>> >>
>>> >>
>>> >
>>> > Thanks for your replay!
>>> >
>>> > Adding as a testCompile didn't help.
>>> >
>>> > Here is my dependencies section:
>>> >
>>> > dependencies {
>>> >     compile 'log4j:log4j:1.2.16'
>>> >     compile 'org.slf4j:slf4j-log4j12:1.6.1'
>>> >     // for debug reason I removed other dependencies
>>> > }
>>> >
>>> > and output from gradle test run task (info level):
>>> >
>>> > :compileTestJava
>>> > :: resolving dependencies :: #crm;0.1-SNAPSHOT
>>> >     confs: [testCompile]
>>> >     found log4j#log4j;1.2.16 in
>>> > file:/C:/Documents%20and%20Settings/dludera/.m2/repository/
>>> >     found org.slf4j#slf4j-log4j12;1.6.1 in
>>> > file:/C:/Documents%20and%20Settings/dludera/.m2/repository/
>>> > :: resolution report :: resolve 16ms :: artifacts dl 0ms
>>> >
>>> > (...) and then:
>>> > MyClassName.java:5: package org.slf4j does not exist
>>> > import org.slf4j.Logger;
>>> >
>>> > So ant compile task couldn't find package org.slf4j which is in
>>> > :slf4j-log4j12-1.6.1.jar library. I don't underestand why gradle
>>> doesn't
>>> > attach it - maven in the same configuration works fine. I use gradle
>>> 0.9-p3
>>> > with useTestNG(), here is my test section:
>>> >
>>> > test {
>>> >     useTestNG()
>>> >     systemProperties 'org.uncommons.reportng.stylesheet':
>>> > "${projectDir}/resources/hudsonesque.css"
>>> >     options {
>>> >         listeners << 'org.uncommons.reportng.HTMLReporter'
>>> >         listeners << 'org.uncommons.reportng.JUnitXMLReporter'
>>> >     }
>>> >     useDefaultListeners = false
>>> > }
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Regards,
>>> >
>>> > Darek
>>> >
>>>
>>>  Very strange, pastebin or send the whole gradle script.
>>>
>>> --
>>>  Jason Porter
>>> http://lightguard-jp.blogspot.com
>>> http://twitter.com/lightguardjp
>>>
>>> Software Engineer
>>> Open Source Advocate
>>>
>>> PGP key id: 926CCFF5
>>> PGP key available at: keyserver.net, pgp.mit.edu
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>>    http://xircles.codehaus.org/manage_email
>>>
>>>
>>>
>>  Yes, it's defenetly strange. Here is my gradle script (without some not
>> important tasks):
>>
>> apply plugin: 'war'
>> apply plugin: 'eclipse'
>> apply plugin: 'code-quality'
>> apply plugin: 'project-reports'
>>
>> version = '0.1-SNAPSHOT'
>> warName = archivesBaseName + '-' + version + '.war'
>> sourceCompatibility = 1.6
>> targetCompatibility = 1.6
>>
>> repositories {
>>     mavenRepo urls: new File(System.getProperty('user.home') +
>> '/.m2/repository/').toURI().toURL()
>>     mavenCentral()
>>     mavenRepo urls: 'http://download.java.net/maven/2/'
>>     mavenRepo urls: 'http://repository.jboss.com/maven2'
>>     mavenRepo urls: '
>> http://oss.sonatype.org/content/repositories/vaadin-snapshots/'
>> }
>>
>> configurations {
>>     findbugsConf
>>     pmdConf
>> }
>>
>> dependencies {
>>     compile 'com.vaadin:vaadin:6.4.0'
>>     runtime 'com.oracle:oracle:11.2.0.1.0'
>>
>>     compile 'log4j:log4j:1.2.16'
>>     compile 'org.slf4j:slf4j-log4j12:1.6.1'
>>      compile ('org.hibernate:hibernate-entitymanager:3.5.1-Final') {
>>         exclude(module: 'slf4j-api')
>>     }
>>     compile ('org.hibernate:hibernate-validator:4.0.2.GA')
>>     testCompile 'org.uncommons:reportng:1.1.1'
>>     testCompile 'org.testng:testng:5.11:jd...@jar'
>>     findbugsConf 'net.sourceforge.findbugs:findbugs:1.3.2',
>> 'net.sourceforge.findbugs:findbugs-ant:1.3.2'
>>     pmdConf 'pmd:pmd:4.2.5'
>> }
>>
>> eclipseWtp {
>>     deployName = archivesBaseName
>> }
>>
>> task ide(dependsOn: configurations.runtime.buildArtifacts, type: Copy) {
>>     def libDir = file('lib')
>>     into(libDir)
>>     from configurations.runtime
>>     from configurations.runtime.allArtifacts*.file
>>     from configurations.testRuntime
>>     from configurations.testRuntime.allArtifacts*.file
>> }
>>
>> Here is my dummy class from src/main/java:
>> package pl.something;
>>
>> import org.slf4j.Logger;
>> import org.slf4j.LoggerFactory;
>>
>> import com.vaadin.Application;
>> import com.vaadin.ui.Button;
>> import com.vaadin.ui.Window;
>>
>>
>> /**
>>  * The Application's "main" class
>>  */
>> @SuppressWarnings("serial")
>> public class MyVaadinApplication extends Application {
>>
>>     private static final Logger log =
>> LoggerFactory.getLogger(MyVaadinApplication.class);
>>
>>     private Window window;
>>
>>     private String appName;
>>
>>     public MyVaadinApplication() {
>>         this.appName = "My Vaadin Application";
>>     }
>>
>>     public MyVaadinApplication(String appName) {
>>         this.appName = appName;
>>     }
>>
>>     @Override
>>     public void init() {
>>         window = new Window(appName);
>>         setMainWindow(window);
>>         window.addComponent(new Button("Click Me"));
>>
>>         log.info("Clicked!");
>>     }
>>
>>     public String getAppName() {
>>         return appName;
>>     }
>> }
>>
>> and here is it's stupid test (from src/test/java):
>>
>> package pl.something.test;
>>
>> //import org.testng.log4testng.Logger;
>>
>> import org.slf4j.Logger;
>> import org.slf4j.LoggerFactory;
>>
>> import org.testng.Assert;
>> import org.testng.annotations.Test;
>> import org.testng.annotations.BeforeClass;
>>
>> import pl.something.MyVaadinApplication;
>>
>> public class MyVaadinApplicationTest {
>>
>>     private static final Logger log =
>> LoggerFactory.getLogger(MyVaadinApplicationTest.class);
>>
>>     private MyVaadinApplication testApp;
>>
>>     private String testAppName;
>>
>>     @BeforeClass
>>     public void setUp() {
>>         testAppName = "My Vaadin Test Application";
>>         testApp = new MyVaadinApplication(testAppName);
>>
>>         log.info("Setting up ...");
>>     }
>>
>>     @Test
>>     public void shouldReturnValidTestAppName() {
>>         Assert.assertEquals(testAppName, testApp.getAppName());
>>     }
>> }
>>
>> and testng.xml (src/test/resources)
>>
>> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd";>
>> <suite name="some_suit">
>>     <test verbose="1" name="MyVaadinApplicationTest" annotations="JDK">
>>         <classes>
>>             <class
>>                 name="pl.something.test.MyVaadinApplicationTest" />
>>         </classes>
>>     </test>
>> </suite>
>>
>> --
>> Regards!
>>
>> Darek
>>
>
>
>
> --
> Adam Murdoch
> Gradle Developerhttp://www.gradle.org
> CTO, Gradle Inc. - Gradle Training, Support, Consultinghttp://www.gradle.biz
>
>
Both solutions worked. I'll add slf4j-api as a dependency. Thank you both
for your help. I'll read some about gradle's transitive feature as fast as
it's possible:)

-- 
Regards!

Darek

Reply via email to