[ 
https://issues.apache.org/jira/browse/SOLR-3204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224822#comment-13224822
 ] 

Scott Carey commented on SOLR-3204:
-----------------------------------

{quote}
This is a maven issue. solr-commons-csv only exists to maven.

Otherwise these are just classes inside the war file (essentially an 
implementation detail of solr).
{quote}

The java classpath is not an implementation detail if you expect any of your 
jars to share a classloader with others.  At least not until project Jigsaw is 
complete and Solr is using Java 8 modules.

{quote}
Yes of course. But e.g. maven can help to prevent those problems. It will not 
allow you to add the same dependency in different versions. The issue we had 
caused by our separate release of unreleased package under the solr group-id 
was that maven is seeing our repackaged dependency under another artifact id - 
so it cannot prevent that a project adds solr-commons-xx, version-foo and 
commony-xx, version-bar, because it is two different things.
{quote}

Exactly.  If you publish a maven artifact under a custom groupId:artifactId the 
sane thing to do is make sure the classes don't overlap with the old one.  
Maven guards against duplicate artifacts in the same classpath.  Otherwise 
users will implicitly get both copies on their classpath too easily.

{quote}
The arguments that this is more than a maven issue are bogus.
Do you take me for a fool?
{quote}

What happens if a non-maven user gets both solr-commons-csv.jar and 
commons-csv.jar on their classpath?

{quote}
I think you missed my point?: Changing the Ant build to fix a Maven problem is 
a non-starter.
{quote}

Then specify it as <optional>true</optional> or <scope>provided</scope>.  If 
you publish to maven central a pom.xml that says "Solr must have jar FOO!" and 
then complain that it is a "Maven problem" when jar FOO is actually used, then 
you've used maven incorrectly.

{quote}
Users would have to either have to a) download the binary release and manually 
install the non-Maven artifacts one-by-one in their local or internal 
repository (after consulting both the top-level Maven POM and a list of 
per-module dependencies that currently only exists in a lib/ directory 
listing); or b) download the source release, run ant get-maven-poms, then run 
mvn -N -Pbootstrap install. Neither of these fall within the expected level of 
effort for Maven users.
{quote}

or C)
you can publish the artifacts, link to them as optional, and users can specify 
in their pom's which jar to bring in.  This is not that uncommon -- it is the 
expected way to deal with slf4j for example, where one and only one of several 
options must be chosen at runtime.  Same thing with the bytecode re-writing 
dependency in Hibernate.

{quote} 
-1 from me for using optional dependencies to counter Maven's virality.
{quote}

Please consider this further with option C) above for artifacts that live in a 
custom groupId:artifactId namespace but not a custom package.


                
> solr-commons-csv must not use the org.apache.commons.csv package
> ----------------------------------------------------------------
>
>                 Key: SOLR-3204
>                 URL: https://issues.apache.org/jira/browse/SOLR-3204
>             Project: Solr
>          Issue Type: Bug
>          Components: Build
>    Affects Versions: 3.5
>            Reporter: Emmanuel Bourg
>            Assignee: Uwe Schindler
>            Priority: Blocker
>             Fix For: 3.6, 4.0
>
>         Attachments: SOLR-3204.patch, SOLR-3204.patch, SOLR-3204.patch, 
> SOLR-3204.patch, apache-solr-commons-csv-1.0-SNAPSHOT-r966014.jar, 
> apache-solr-commons-csv-1.0-SNAPSHOT-r966014.jar, rule.txt, rule.txt, 
> solr-csv.patch
>
>
> The solr-commons-csv artifact reused the code from the Apache Commons CSV 
> project but the package wasn't changed to something else than 
> org.apache.commons.csv in the process. This creates a compatibility issue as 
> the Apache Commons team works toward an official release of Commons CSV. It 
> prevents Commons CSV from using its own org.apache.commons.csv package, or 
> forces the renaming of all the classes to avoid a classpath conflict.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to