On Aug 12, 2011, at 4:45 PM, Sergiu Dumitriu wrote:

> On 08/12/2011 07:50 AM, Vincent Massol wrote:
>> Hi devs,
>> 
>> Running mvn dependency:dependency-analyze produces interesting results.
>> 
>> For example:
>> 
>> [INFO] 
>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> [INFO] Building XWiki Commons - Properties 3.2-SNAPSHOT
>> [INFO] 
>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> …
>> [INFO] --- maven-dependency-plugin:2.3:analyze (default-cli) @ 
>> xwiki-commons-properties ---
>> [WARNING] Used undeclared dependencies found:
>> [WARNING]    org.slf4j:slf4j-api:jar:1.6.1:compile
>> [WARNING]    javax.inject:javax.inject:jar:1:compile
>> [WARNING] Unused declared dependencies found:
>> [WARNING]    
>> org.xwiki.commons:xwiki-commons-component-api:jar:3.2-SNAPSHOT:compile
>> [WARNING]    org.xwiki.commons:xwiki-commons-test:jar:3.2-SNAPSHOT:test
>> [WARNING]    org.hibernate:hibernate-validator:jar:4.2.0.Final:test
>> [WARNING]    org.hamcrest:hamcrest-core:jar:1.1:test
>> [WARNING]    org.jmock:jmock:jar:2.5.1:test
>> 
>> The question is (for this module but more generally for all others):
>> * Should we add slf4j and javax.inject reps in the pom.xml for this module? 
>> (for ex today slf4j and javax.inject are found in the component-api dep)
>> 
>> I think we should, wdyt?
> 
> +1 as well.

hmm actually we need to decide about the following:

* In order to simplify writing pom.xml for modules having components (i.e. 
depending on xwiki-commons-component-api) I had added the following to  
xwiki-commons-component-api/pom.xml:

    <!-- Make it easy for components that wish to log - They don't have to 
explicitly import SLF4J -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

* In the same manner we have a dependency on javax.inject in 
xwiki-commons-component-api/pom.xml:

    <!-- We add this dependency here so that users of the Component API just 
need to depend on this artifact and
         don't have to explicitly add a dependency on javax.inject:java.inject. 
-->
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
    </dependency>

So the question is: do we want to force each module depending on 
xwiki-commons-component-api to have to declare an explicit dep on javax.inject 
and org.slf4j?

I'm not so sure about that…

WDYT?

Thanks
-Vincent

>> Note that the "Unused declared dependencies found:" doesn't always generate 
>> correct results as is the case here. This is mostly because it's a static 
>> byte code check so any dep used at runtime will be considered unused.
>> See 
>> http://www.sonatype.com/books/mvnex-book/reference/optimizing-sect-dependency-plugin.html
> 
> Some of these dependencies are not used directly by us, but are needed 
> transitively by another library. For example, slf4j needs logback, which 
> we never use directly (although we don't really declare it in every 
> module that does logging). Hibernate needs us to pick a cache, a 
> connection pool, validator, and a bytecode manipulation utility. So yes, 
> we can safely ignore most of these false negatives, but we should still 
> try to remove those that are really wrongfully declared as dependencies.
> 
>> Thanks
>> -Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to