Commit Graph

455 Commits

Author SHA1 Message Date
Eugene Yokota fe8d290c17 Implemented cached resolution (minigraph caching) 2014-09-29 17:33:37 -04:00
Josh Suereth afd137844f Reduce the noise when resolving maven artifacts. 2014-09-29 14:09:35 -04:00
Josh Suereth bd34aa057a Merge pull request #1621 from tmandke/0.13
propagate pattern descriptorOptional and skipConsistencyCheck
2014-09-26 07:22:47 -04:00
Josh Suereth ec5dfee517 Fix NPE in ChainrResolver when there is no ivy file for a dependency. 2014-09-25 08:08:26 -04:00
Tejas Mandke 270246464c propagate pattern descriptorOptional and skipConsistencyCheck 2014-09-24 19:42:15 -07:00
Josh Suereth d865251686 Add workaround (and warning message) for when ChainResolver gets a null publication date while we investigate other issues.
* Attempt to set publication date to last modified time, if the stars align
* Issue warning about undefined resolution behavior otherwise
* Add scripted test which exercises the NPE issue in resolving -SNAPSHOTs.
* Commit scalariform style edit in Act.scala

* After parsing and transforming the pom, check for pub date.
* If we don't have a pub date, try to grab lastModified from the URL
* If we can't do anything, issue a warning about the problem artifact.
2014-09-24 18:23:15 -04:00
Josh Suereth 5e65beb145 Fix URL resolver so that we can push Maven artifacts to local maven repositories.
* Hook "LocalIfFile" repository to also handle publishing
* Add test to ensure mavne publishign works.
2014-09-24 14:37:26 -04:00
Josh Suereth e8a2fcc26f Merge pull request #1600 from topping/0.13
PR for #1589
2014-09-24 09:11:57 -04:00
Brian Topping 59ea77e590 Add warning for bad XML parse of settings file 2014-09-22 10:56:10 -04:00
Brian Topping 31acddf856 Additional updates, should be clean now. 2014-09-17 15:24:33 -04:00
Josh Suereth 3c8893ef2c Merge pull request #1590 from jedesah/0.13
Add developer key
2014-09-17 10:32:04 -04:00
Jean-Rémi Desjardins e3975015b8 Fix obtuse compilation error 2014-09-16 09:26:43 -07:00
Jean-Rémi Desjardins 2eb8fd1b8a Merge branch '0.13' of github.com:sbt/sbt into 0.13 2014-09-16 09:20:21 -07:00
Eugene Yokota fe7a6f6193 Expose Ivy's circular dependency check via UpdateOptions 2014-09-16 09:22:21 -04:00
Brian Topping ad7d9ce42b Tested PR for #485. Had a hard time squashing this, maybe because I did a merge in between. Sorry about that! 2014-09-15 15:26:45 -04:00
Brian Topping ef3eccf95f Merge remote-tracking branch 'upstream/0.13' into 0.13 2014-09-15 11:14:13 -04:00
Brian Topping b89c49adcb Untested PR for #485. Unable to test because unable to build 2014-09-15 10:48:47 -04:00
Jean-Rémi Desjardins 880f3733d9 Add constructor to avoid binary compatibility issues 2014-09-11 09:36:37 -07:00
Jean-Rémi Desjardins 3ea995225f Merge branch '0.13' of github.com:sbt/sbt into 0.13 2014-09-10 22:56:01 -07:00
Jean-Rémi Desjardins 183c2bcfe2 Add developers keySetting
The motivation for this is mainly to avoid having to define a pomExtra to publish to Maven central
2014-09-10 20:18:28 -07:00
Josh Suereth bdd3d01f6e Fixes from review, better names and internal code documentation. 2014-09-10 07:56:19 -04:00
Josh Suereth b226f6511a Fix Maven configuration mappings in Ivy.
It turns out there was a very subtle, and evil, issue sitting the Ivy/maven configuration, and it
related to dependency mapping.    A mapping of `foo->bar(*)` means that the local configuration
`foo` depends on the remote configuration `bar`, if it exists, or *ALL CONFIGURATIONS* if `bar`
does not exist.   Since the default Ivy configuration mapping was using the random `master`
configuration, which AFAICT is NEVER specified, just an assumed default, this would cause leaks
between maven + ivy projects.

i.e. if  a maven POM depends on a module denoted by an ivy.xml file, then you'd wind up accidentally
bleeding ALL the ivy module's configurations into the maven module's configurations.

This fix works around the issue, by assuming that if there is no `master` configuration, than the
maven default of `compile` is intended.   As sbt forces generated `ivy.xml` files to abide by
maven conventions, this works in all of our test cases.   The only scenario where it wouldn't work
is those who have custom ivy.xml files *and* have pom.xml files which rely on those custom ivy.xml files,
a very unlikely situation where the workaround is:  "define a master configuration".

Includes a test demonstrating the issue.
2014-09-09 17:45:02 -04:00
Josh Suereth dbf69b11cd Split out inter-project resolver into its own Chain.
Fixes #1565

* Create two chains if we have inter-project resolver
  - One which ensures inter-project deps are always taken
  - One which will look in all "other" repositories for
    dependencies and will use the "most up-to-date" -SNAPSHOT
    strategy.
* No additional tests, as this would simple break every
  multi-project test if it were wrong.
2014-09-05 10:40:49 -04:00
Eugene Yokota 7e0c76f5a6 Merge branch '0.13' into 0.13.6 2014-08-24 18:24:37 -04:00
Josh Suereth 260d67f288 Merge pull request #1537 from sbt/fix/1275
Improves pom dynamic revision conversion
2014-08-24 18:19:02 -04:00
Eugene Yokota a5a44a88c2 #1541. Use HTTPS for sbt plugin repository 2014-08-24 16:37:24 -04:00
Eugene Yokota 2904bdcb32 #1541. Use HTTPS for Typesafe repository 2014-08-23 17:47:48 -04:00
Eugene Yokota 9b42a1899d Fixes #1549. Use HTTPS for Java.net Maven 2 repository 2014-08-23 17:47:48 -04:00
Eugene Yokota 1e180cc030 Deprecate JavaNet1Repository. #1541
I don’t think there’s an alternative for java.net Maven 1 repository.
2014-08-23 17:47:47 -04:00
Eugene Yokota f99c5817f5 Based on Ivy's behavior, bringing back approximation
I assumed 1.1+ should be treated as 1.+, but it seems like Ivy treats
it more as “any version that starts with 1.1” including 1.10.
Josh’s original implementation approximates this by making ranges for
multiple digits, 1.1~1.2, 1.10~1.20, etc.
2014-08-22 03:54:32 -04:00
Havoc Pennington b202bd6848 Merge pull request #1538 from sbt/fix/1439
Fixes #1439. Fixes metabuild downloading unused Scala 2.10.2
2014-08-20 14:26:02 -04:00
Eugene Yokota 8c90e7eb74 Fixes #1201. Display instruction to overrideScalaVersion
scala-library is currently treated as just one of the library modules.
This means that it’s at the mercy of eviction if some other library
uses newer version of scala-library.
This commit displays a instruction on how to force scalaVersion if
warnScalaVersionEviction flag is true on EvictionWarningOptions.
2014-08-18 00:54:19 -04:00
Eugene Yokota 8a069d0fb2 Fixes #1439. Fixes metabuild downloading unused Scala 2.10.2
Scala instance is added to the Ivy graph via autoLibraryDependency.
For metabuilds, scala-library is scoped under “provided” configuration,
which does not seem to evict modules on “compiled” configuration.
This commit turns overrideScalaVersion flag to true for the metabuilds,
so override rules are added for the following modules:
- scala-library
- scala-compiler
- scala-reflect
2014-08-17 23:18:32 -04:00
Eugene Yokota b812cdc916 Fixes #1275. Fixes pom dynamic revision conversion
Ivy and pom uses slightly different notation for version range and
dynamic revision.
This change fixes the dynamic revisions involving “+”.
First, when a revision like “1.1+” is found, it will now be treated as
“1.+”.
Next, when it finds a revision like “1+” is found, it will be treated
as “+”.
The conversion of “+” is hardcoded to be “[0,)”.
2014-08-16 22:38:35 -04:00
Eugene Yokota e1d60b6de0 Fixes #1484. Fixes another variant of update NPE
Ivy gives an array that contains null for caller configurations.
sbinary barfs when it sees null. Curiously two of the sbt plugins that
hit this bug happens to be from Typesafe:
    addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.2")
    addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager"  % "0.7.3")
2014-08-15 02:57:17 -04:00
Eugene Yokota 074fbdb9e6 ModuleDetailReport => OrganizationArtifactReport
ModuleDetailReport hasn’t been released yet, so this rename is safe.
2014-08-15 01:57:21 -04:00
Josh Suereth 58175e28c1 Merge pull request #1520 from sbt/fix/1514
Fixes #1514, #321. Fixes -SNAPSHOT issue by re-implemeting ChainResolver
2014-08-12 10:04:10 -04:00
Eugene Yokota d11427dd85 Using iterators 2014-08-11 22:49:48 -04:00
Eugene Yokota 01c95b5d62 Special treatment for a special resolver: inter-project 2014-08-11 12:45:14 -04:00
Josh Suereth f7c4898a97 Merge pull request #1491 from sbt/fix/528
Unresolved dependency warning includes source position. Fixes #528
2014-08-11 07:51:33 -04:00
Eugene Yokota 286d567781 Fixes #1514, #321. Fixes -SNAPSHOT issue by re-implemeting ChainResolver.
Adds `lastestSnapshots` flag to `updateOptions`, which controls the behavior of the chained resolver. Up until 0.13.6, sbt was picking the first `-SNAPSHOT` revision it found along the chain. When  is enabled (default: ), it will look into all resolvers on the chain, and compare them using the publish date.
The tradeoff is probably a longer resolution time if you have many remote repositories on the build or you live away from the severs. So here's how to disable it:

    updateOptions := updateOptions.value.withLatestSnapshots(false)

Ivy by default uses latest-revision as the latest strategy. This strategy I don't think takes in account for the possibility that a changing revision may exist in multiple repositories/resolvers with having identical version number like 0.1.0-SNAPSHOT.
The implementation is a bit hacky, but I think it attacks the core of this problem.
2014-08-10 18:56:58 -04:00
Roberto Tyley d46087ff08 Fix pom-export of Maven Central repository
Commit a1e26ca6 broke the `make-pom` & `pom-advanced` dependency-management
tests by replacing one reference to `IBiblioResolver.DEFAULT_M2_ROOT` in
`Resolver`, but not the other reference in `MakePom`:

https://travis-ci.org/sbt/sbt/jobs/31939788#L2517-L2519

...the secure url was no longer recognised as the default Maven Repository
root, so was erroneously exported.
2014-08-08 17:08:54 -04:00
Eugene Yokota f3d71f98e4 Adds sbt.repository.secure (default: true) #1494 2014-08-08 17:08:54 -04:00
Roberto Tyley a826ac743b Use HTTPS for downloading artifacts from Maven Central
Sonatype have enabled HTTPS access for Maven Central:

http://central.sonatype.org/articles/2014/Aug/03/https-support-launching-now/

Note that the Ivy class IBiblioResolver contains the old http url
(ie DEFAULT_M2_ROOT="http://repo1.maven.org/maven2/"):

http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java?revision=1557968&view=markup#l72
2014-08-08 17:07:44 -04:00
Eugene Yokota 840acba087 Adds `dependencyPositions` task to explicitly track dependency positions. 2014-08-08 00:53:09 -04:00
Eugene Yokota d7dba9c095 Moves JCenter and Bintray repo into object Resolver. #1405
This is more consistent with other hardcoded repos like Sonatype.
Also hardcoding everything to https.
2014-08-07 15:50:57 -04:00
Evgeny Goldin 75b815e125 JCenter and BintrayMavenRepository resolvers added 2014-08-06 01:43:19 +02:00
Eugene Yokota dc2ae51d73 Adds UnresolvedWarningConfiguration that caches ModuleID -> SourcePosition mapping.
UnresolvedWarning is moved back to IvyActions.scala where it belongs.
The mapping between ModuleID and SourcePosition is passed in as UnresolvedWarningConfiguration.
This is calculated once in Defaults using State and is cached to filesystem.
2014-08-03 02:31:56 -04:00
Eugene Yokota 58b7c63f84 Unresolved dependency warning includes source position. Fixes #528
Unresolved dependency warning is moved to UnresolvedDependencyWarning class including
the fail path that was added in #1467.
To display the source position, I need to access the State, so I had to move the
error processing out of IvyActions and add UnresolvedDependencyWarning, which is
aware of State.
2014-08-02 06:25:24 -04:00
Eugene Yokota 9124056440 Fixes NullPointerException during update. Fixes #1484 2014-08-01 21:00:41 -04:00
Eugene Yokota f77b6b2b03 scalariform formatting 2014-07-29 22:03:02 -04:00
Eugene Yokota d6dbbaaf2e Improve doc on ModuleDetailReport per @jsuereth 2014-07-28 13:25:54 -04:00
Eugene Yokota c8af32950d Implements eviction warning stories. #1200
This implements all stories from https://github.com/sbt/sbt/wiki/User-Stories%3A-Conflict-Warning.
When scalaVersion is no longer effective an eviction warning will display.

    Scala version was updated by one of library dependencies:
        * org.scala-lang:scala-library:2.10.2 -> 2.10.3

When there're suspected incompatibility in directly depended Java libraries,
eviction warnings will display.

   There may be incompatibilities among your library dependencies.
   Here are some of the libraries that were evicted:
      * commons-io:commons-io:1.4 -> 2.4

When there's suspected incompatiblity in directly depended Scala libraries,
eviction warnings will display.

  There may be incompatibilities among your library dependencies.
  Here are some of the libraries that were evicted:
      * com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4

This also adds 'evicted' task, which displays more detailed eviction warnings.
2014-07-27 12:26:12 -04:00
Eugene Yokota 3e3d7651f8 pseudo-case class VersionNumber
VersionNumber is a pseudo-case class that represents any form of
version number. The unapply extractor can parse String into
three sequences that makes up VersionNumber.
VersionNumberCompatibility trait uses two VersionNumber instances
to evaluate binary compatibility between them.
Two implementations SemVer and SecondSegment are provided.
2014-07-27 12:14:30 -04:00
Eugene Yokota f2ad294984 Fixing more NullPointerError by wrapping license URL with Option 2014-07-27 12:01:11 -04:00
Eugene Yokota bb6e3e34e6 Fixing NullPointerError caused by reading String from Ivy directly 2014-07-25 03:51:20 -04:00
Eugene Yokota d40733807f Implemented general eviction warning. #1200
a> update
    [info] Updating {file:/foo/}a...
    [info] Resolving org.fusesource.jansi#jansi;1.4 ...
    [info] Done updating.
    [warn] Some dependencies were evicted:
    [warn]  * org.scala-lang:scala-library (2.10.1) -> 2.10.3
2014-07-25 03:51:20 -04:00
Eugene Yokota 855e7f176b Expand ModuleReport into the full Ivy resolution report. #1200
Currently sbt's update task generates UpdateReport from
Ivy's resolution report.
For each configuration there's ConfigurationReport, which contains
just enough information on the resolved module/revision/artifact.

Speaking of module, in Ivy module means organization and name,
and organization, name, and version is called module revision.
In sbt, module revision is called Module.
This is relevant because to talk about evictions, we need
a terminology for organization and name combo.

In any case ConfigurationReport is expanded to have `details`
field, which contains Seq[ModuleDetailReport], which represents
organization and name combo plus all the modules
just like Ivy's resolution report XML.
Furthermore, ModuleReport is expanded to include licenses,
eviction, callers, etc.
2014-07-25 03:51:19 -04:00
Eugene Yokota e997769971 Consolidated resolution. Fixes #413
This adds a new setting key called updateOptions, which can enable
consolidated resolution for update task.
The consolidated resolution automatically generates an artificial
module descriptor based on the SHA-1 of all external dependencies.
This consolidates the Ivy resolution of identical Ivy dependency
graph across multiple subprojects.

This is how it's enabled:

    updateOptions := updateOptions.value.withConsolidatedResolution(true)
2014-07-24 02:12:46 -04:00
Eugene Yokota ae13cd8412 Improves unresolved dependencies error by displaying the deps nodes. fixes #1422, #381 2014-07-10 17:49:52 -04:00
Josh Suereth fd32070aab Merge pull request #1400 from dpratt/0.13
Add 'scala-jar' to the list of jar artifacts.
2014-07-03 11:57:12 -04:00
Jacek Laskowski ebbb77e200 Typo fixes + removing unnecessary semicolons 2014-06-25 00:08:25 +02:00
David Pratt 0bb9be34df Make jar artifact a 0-byte file. 2014-06-09 13:54:20 -05:00
David Pratt 2ceb4f7d72 Add a unit test for the 'scala-jar' mapping. 2014-06-07 20:58:31 -05:00
David Pratt 0ac485feb7 Add 'scala-jar' to the list of jar artifacts.
The CustomPomParser has a hard-coded list of 'blessed' Maven POM packaging types
that are actually packaged as jar files, but Ivy incorrectly maps the file extension.
This patch allows artifacts published with the 'scala-jar' packaging to be properly
resolved and used in an SBT project.
2014-06-05 18:11:37 -05:00
Josh Suereth 4c2d88649e Fix formatting issues and bump to sbt 0.13.5 2014-05-28 09:12:55 -04:00
Josh Suereth 89091ca4fc Merge remote-tracking branch 'origin/0.13.5' into wip/fix-doc-generation
Conflicts:
	project/Sbt.scala
2014-05-28 09:09:51 -04:00
Josh Suereth b69a273f37 Fix import issues to generate sxr/scaladoc. 2014-05-28 08:55:29 -04:00
Josh Suereth abffc3e1bd Bump expected 2.11 module versions so we can compile with 2.11
Add scala 2.11 test/build verification.

* Add 2.11 build configuratoin to travis ci
* Create command which runs `safe` unit tests
* Create command to test the scala 2.11 build
* Update scalacheck to 1.11.4
* Update specs2 to 2.3.11
* Fix various 2.11/deprecation removals
  and other changes.

Fix eval test failure in scala 2.11 with XML not existing.
2014-05-14 19:08:05 -04:00
Josh Suereth 244abd3b6f Scalariforming test code 2014-05-07 11:52:23 -04:00
Eugene Yokota adb41611cf added scalariform 2014-05-01 12:50:07 -04:00
Antonio Cunei 350619545d Do not attempt to publish if no artifacts are present
Ivy transactional publishing will abort if no artifacts
are published, either because the temporary directory is
not being created, or because Ivy will detect an anomalous
condition.

Therefore, skip publishing altogether if there is
nothing to publish to begin with.
2014-04-30 17:40:58 +02:00
eugene yokota 96558930c3 Merge pull request #1226 from sbt/wip/bump-to-latest-ivy
Bump to our own release of ivy 2.4.x
2014-04-10 10:15:26 -07:00
eugene yokota 46598ea575 Merge pull request #1232 from sbt/wip/fix-1156
Ensure that if artifact is published, we overwrite default checksums.
2014-04-07 08:36:16 -07:00
Eugene Yokota d8ee16c600 Roll back sbt/sbt@482f99 (aggressive deletion of cache). Fixes #1091.
* sbt 0.12.3 introduced sbt/sbt@482f99 to fix #637 and #641.
* The underlying issue of #641 was an incorrect classifier, and it was
  fixed in sbt/sbt@718fa9 for #683 and shipped as sbt 0.13.0.
2014-04-05 01:53:31 -07:00
Josh Suereth e8dd19cb92 Remove JDK7 features from Resolver shim. 2014-04-04 20:25:37 -04:00
Josh Suereth 60a457d083 Ensure that if artifact is published, we overwrite default checksums.
Fixes # 1233

* Add a new "shim" for RepositoryResolvers that modifies the "put"
  method so that it will ignore the overwrite flag for checksums.
2014-04-04 17:19:56 -04:00
Josh Suereth 6e72324b88 Bump to our own nightly of ivy 2.4.0 (RC1+).
* Testing the infrastructure to use our own instance of ivy
* Allow us to push bug-fixes/performance directly into ivy
  on our own pace, as we submit patches back to ivy master
2014-03-29 13:06:27 -04:00
Eugene Yokota f58fbb8d7d CustomPomParser compatibility with 0.13.1. #1191 #1192 2014-03-21 23:53:06 -04:00
Dan Sanduleac 6588ac1b62 sbtTransformHash -> e:sbtTransformHash 2014-03-19 11:08:17 +00:00
Josh Suereth 875562f3db Don't fail publishing on overwrite, but issue a warning.
Workaround for #1156.

* Creates a new FileRepository that will stil allow local files
  to be transfered if overwrite is true (non-snapshot module),
  but will issue a warning about deprecated behavior.
* Ensure warning is long enough to annoy people into asking
  what it's about.
2014-03-08 14:08:25 -05:00
Josh Suereth f06948a4af Merge pull request #1145 from sbt/wip/issue-1136
Fix #1136 - Ivy's + dependency ranges not converted appropriately to maven.
2014-03-07 17:22:29 -05:00
Josh Suereth 5486daf700 Pull in @cunei's suggestion for a more complete Ivy->Maven dynamic revision convertor.
We attempt to convert these constructs to maven:
   * 1.+
   * ]1,2]
   * [2,3[
   * 1+  - Albeit this one is a heuristic for accuracy.

This should help ivy users which prefer the nicer 1.2.+ syntax.

Also adds tests/improves exisitng tests.
2014-03-05 19:14:21 -05:00
Josh Suereth 21da87c4e7 Fixes #429 - Add better error messages when credentials are not found.
* Create hackery to inspect registered credentials in the IvyCredentialStore.
* Create a new authenticator which inserts itself *after* the ivy authenticator.
  - Will issue an error message detailing host/realm required if credentials are
    not found.
  - Also lists out configured Realms with a 'is misspelled' message.
  - Ignores proxy-related authentication errors, for now.
2014-03-04 11:36:34 -05:00
Josh Suereth 8cd44646b7 Fix #1136 - Ivy's `+` dependencies not converted to maven style syntax.
* Attempt to convert dependencies that end in `+` into maven-style version range
* if a failure occurs, just use the original version (could be bad...).
2014-03-03 12:10:37 -05:00
Dan Sanduleac ba4d57b120 Fix binary compatibility with 0.13 2014-01-23 12:07:37 +00:00
Dan Sanduleac 0199a93ffb Expose overwrite flag in IvyActions.publish, and by default only overwrite if it's a snapshot 2014-01-17 10:45:57 +00:00
William Benton 3a1ad44c45 Support Ivy 2.3.0-final.
This entailed modifying ResolutionCache and the CustomPomParser
to reflect changes to the ResolutionCacheManager interface and
DefaultExtendsDescriptor class between Ivy 2.3.0-rc1 and
2.3.0-rc2. Specifically,

1. ResolutionCacheManager now includes two additional methods
that needed implementations in ResolutionCache:
getResolvedModuleDescriptor(mrid: ModuleRevisionId) and
saveResolvedModuleDescriptor(md: ModuleDescriptor). I adapted
the implementations for these (which are expressed primarily in
terms of other interface methods) from Ivy 2.3.0's
DefaultResolutionCacheManager.

2. Instead of taking a ModuleRevisionIdentifier and a resolved
ModuleRevisionIdentifier as its first two arguments, the
DefaultExtendsDescriptor constructor now takes a
ModuleDescriptor. This was a trivial change.

Note that ResolutionCache.getResolvedModuleDescriptor does not
appear to be used by Ivy as sbt uses Ivy and there is thus no
test coverage for its implementation. Also note that the
DefaultResolutionCacheManager object created in
Update.configureResolutionCache now requires a reference to an
IvySettings object; DRCM expects this to be non-null.
2013-12-13 14:24:37 -06:00
Mark Harrah 57306e6257 Better representation of no cross-version suffix in suffix conflict error message. 2013-10-23 09:46:43 -04:00
Mark Harrah 0cd8849ec1 Work around various issues with Maven local repositories. Fixes #321.
* when mvn does a local 'install', it doesn't update the pom.xml last modified time if the pom.xml content hasn't changed
* an ivy.xml includes publicationDate, so an ivy.xml will always be touched even if the other content hasn't changed
* when Ivy checks if a snapshot is uptodate
  + it sees a SNAPSHOT, so it knows the module metadata and artifacts might change
  + it then checks the lastModified time of the metadata
  + if unchanged, it uses the cached information
  + if useOrigin is effectively false (either it is explicitly false or a resource is remote/isLocal=false),
    this means that a new artifact won't be retrieved
* the Ivy IBiblioResolver
  + must be used for Maven repositories for proper behavior (no FileResolver, for example)
  + only returns URLResources, even for file: URLs
  + a FileResource is needed in combination with useOrigin to avoid copying artifacts from .m2/repository/

This commit fixes the above by setting a custom URLRepository on a constructed IBiblioResolver.
This URLRepository returns FileResources for file: URLs and standard URLResources for others.
The returned FileResource has isLocal=true and sbt sets useOrigin=true by default, so the artifacts
are used from the origin.

If it turns out a similar situation happens when mvn publishes to remote repositories, it is likely the fix for
that would be to figure out how to disable the lastModified check on the metadata and always download the metadata.
This would be slower, however.
2013-10-10 21:36:11 -04:00
Mark Harrah 77ed899a96 'makePom' should not generate <type> elements for standard classifiers. Fixes #728.
The <type> element was generated for any explicit Artifact with a type other than "jar".
withSources() and withJavadoc() create explicit Artifacts of this kind, but shouldn't
have <type> elements.  They are primarily artifacts with classifiers- the type is an
Ivy aspect.  So, when writing to a pom, don't use write a type for known classifiers.
2013-10-02 19:39:17 -04:00
James Roper 743ce99315 String upper/lower case no longer locale dependent
Fixed many instances of the Turkish i bug.

Spare a thought for the poor Turks!
2013-09-24 08:14:15 -04:00
Mark Harrah 8ff424711c parse external pom.xml with CustomPomParser to handle multiple definitions.
Fixes #758.  This is the same issue fixed by 74c07c64a7
but in this case the cause was the top-level pom.xml, which didn't go through CustomPomParser.
2013-09-16 11:58:13 -04:00
Mark Harrah 6a293c4efe don't transform a module descriptor after it has already been processed by this sbt version. Ref #876. 2013-09-13 23:19:06 -04:00
Mark Harrah 31f6f9905d do custom pom processing when reading from cache, fixes #876 2013-09-13 23:18:13 -04:00
Mark Harrah d279f2ed76 Move some logic in custom pom parser to separate methods 2013-09-13 16:37:22 -04:00
William Benton c6cee694ab Add factory methods to PatternsBasedRepository
This commit adds convenience methods to PatternsBasedRepository that
produce a copy of the repository with metadata optional or with
consistency checking disabled.
2013-08-26 14:06:21 -04:00
William Benton 2a3462ac12 Additional options for Ivy resolvers.
Specify an Ivy resolver with ", descriptorOptional" to make Ivy
descriptor files optional for that repository or with
", skipConsistencyCheck" to disable Ivy consistency checks for
that repository.
2013-08-26 14:06:21 -04:00
Mark Harrah d847d4ea2f API docs for CrossVersion 2013-08-16 14:21:44 -04:00
Mark Harrah 89d15ed1f9 Use repo.scala-sbt.org everywhere to be more independent of hosting details. 2013-08-07 18:24:19 -04:00
Mark Harrah d8b3118ba4 Revert packaging='pom' behavior change introduced in c5823ad1e7. Fixes #810. Ref #636. 2013-07-11 18:49:30 -04:00
Mark Harrah 544565bf98 clean up some ConvertResolver parameter lists 2013-07-11 18:49:30 -04:00
Mark Harrah ce1c8b0ebc Better auto project ID handling. Ref #776.
* Consolidate project ID validation and normalization into Project methods
* Provide an earlier and more detailed error message when the directory
  name can't be used for the project ID
2013-06-23 19:57:30 -04:00
Mark Harrah 7796715e88 Move deprecated scala-tools conveniences to private[sbt] accessibility 2013-06-19 17:15:22 -04:00
Mark Harrah 133ff84ae8 Invalidate cache when metadata came from ProjectResolver. Based on the core idea in #770 by @ezh.
Fixes #768, closes #770, fixes #773.
2013-06-05 19:55:24 -04:00
Mark Harrah 268ae565f6 Fix regression in 0.12.3 where artifacts without an explicit configuration wouldn't be listed in ivy.xml. 2013-06-04 11:10:12 -04:00
Mark Harrah cbe6c96564 ProjectResolver should throw an exception when called to retrieve dependency.
As suggested by @ezh, ref #770.
2013-06-03 22:49:48 -04:00
Mark Harrah 8823df4fbc additional docs on ModuleID.extra 2013-06-01 10:56:30 -04:00
Mark Harrah ea52e2c034 Test case and comment fixes #760.
The actual fix was introduced in 6d5d641dd7.
2013-05-28 15:08:13 -04:00
Mark Harrah 04a5a01005 Use publication date from metadata instead of original file's last modified time. Fixes #764. 2013-05-28 11:08:49 -04:00
Mark Harrah 6d5d641dd7 Fix for cache issues when developing sbt itself.
Ivy still seems to remember the resolver that found the metadata
and records that as the resolver to use for the artifact.  Previous
fixes have attempted to ignore or blank this resolver.  The issue
this fix addresses comes from inter-project not being ignored/blanked.
inter-project can't provide artifacts because it is only for projects
in the current build under development and not for modules in a repository.
The symptom is that compiling a build definition fails because the
sbt jars aren't on the classpath, but it is ultimately due to the
inter-project resolver incorrectly being used to resolve artifacts.
2013-05-05 15:42:15 -04:00
Mark Harrah b5dc5c1ddd account for localOnly when cache subclass overrides isChanging 2013-05-05 15:42:15 -04:00
Mark Harrah a4c059cb7e Better auto-generated IDs for default projects. Fixes #554.
For the global plugins project, the default ID is "global-plugins".
For a normal project, the default ID is the name of the build directory.
The ID of a build definition for one of the above appends -build.
2013-04-10 20:15:28 -04:00
Mark Harrah dce2853ae7 Correct data constructor for CrossVersion.binaryMapping. Fixes #716. 2013-03-27 09:17:54 -04:00
Mark Harrah 2f13b7a8c7 add publish-m2 task for publishing to ~/.m2/repository. Fixes #485. 2013-03-27 09:17:53 -04:00
Mark Harrah e69df1ae9c use separate ivy home directories in component provider test so tests can run concurrently 2013-03-18 09:52:57 -04:00
Mark Harrah fcfa51c2ab Remove the conflict warnings based on the evicted modules. Ref #709.
This aspect is better served by a standard Ivy conflict manager.
2013-03-14 16:17:12 -04:00
Mark Harrah 718fa91772 Publish test artifacts in Test configuration and corrects classifier to 'tests'. Fixes #683 2013-03-08 20:11:53 -05:00
Mark Harrah 56b85522b7 ivy cache: ignore the original resolver in more places. Fixes #704 2013-03-08 14:23:31 -05:00
Brendan W. McAdams 77310ac2b6 Resolves #645: Added 'xml:space="preserve"' attribute to extraDependencyAttributes XML Block * This will keep PrettyPrinter from clobbering and breaking pom files for plugins dependent on other plugins 2013-02-28 18:00:40 -05:00
Mark Harrah f6d73128fc deprecations 2013-02-25 09:24:04 -05:00
Mark Harrah cbaef8a6f8 Use Ivy's default name for the resolution report.
Ivy hardcodes the resolution report name in the stylesheet that renders the
HTML from the XML report.  This means that the links to other configurations
are broken when using a custom name.
2013-02-19 14:33:22 -05:00
Eugene Yokota 125727ba83 support binary version in launcher 2013-01-29 16:55:13 -05:00
Eugene Yokota d7779ec96e add more CrossVersionTest 2013-01-24 13:03:40 -05:00
Eugene Yokota fedd43922a add CrossVersionTest 2013-01-24 13:03:40 -05:00
Eugene Yokota 6c24d1a8b8 deprecate binaryVersion 2013-01-24 13:03:40 -05:00
Eugene Yokota b929d778e9 adds sbtApiVersion and scalaApiVersion
sbtApiVersion and scalaApiVersion each calculates the API
version of release builds as well as milestones and RCs.

scalaBinaryVersion and sbtBinaryVersion are now aware of
scalaApiVersion and sbtApiVersion respectively.
For example, sbtBinaryVersion for "0.13.0-SNAPSHOT" now evaluates to
"0.13.0-SNAPSHOT" instead of "0.13".
2013-01-24 08:21:11 -05:00
Paolo G. Giarrusso d64a0e078d Silence boring Eclipse warnings: catching all exceptions, part 2
These warning fixes are new since my last pull request, please verify.
2013-01-22 09:05:15 -05:00
Paolo G. Giarrusso 40bc141058 Silence boring Eclipse warnings: @SuppressWarnings("rawtypes")
Add @SuppressWarnings("rawtypes") to ResolverAdapter, since it has a comment
making pretty clear that using raw types is intended.
2013-01-22 09:05:15 -05:00
Mark Harrah 960af4244a Only include standard scopes in pom.xml. 2013-01-16 10:26:33 -05:00
Mark Harrah 1cdaf530cb follow-up to invalidating changing artifacts: super.cacheModuleDescriptor can be null 2013-01-16 10:26:33 -05:00
Mark Harrah 37f937402f Ivy Artifact needs wildcard configuration added if no explicit ones are defined. Fixes #439. 2013-01-16 10:26:33 -05:00
Mark Harrah 0f28164b53 Invalidate artifacts not recorded in the original metadata when a module marked as changing changes. Fixes #637, #641. 2013-01-15 08:22:00 -05:00
Mark Harrah dd008e4dc5 Warn and optionally error when multiple cross version suffixes for a module are detected. Fixes #639. 2013-01-15 08:21:53 -05:00
Mark Harrah a9ac6b3983 Configurable conflict manager and corresponding documentation on conflictManager, dependencyOverrides, and force(). Fixes #603. 2013-01-11 16:01:31 -05:00
Mark Harrah c5823ad1e7 Don't try to automatically detect a main artifact when packaging=pom. Fixes #636.
For the rare case where a main artifact is expected, add an explicit jar()
to the dependency declaration.
2013-01-11 16:01:30 -05:00
Mark Harrah 4af9b70bf9 Split IvyInterface into Artifact, Configuration, ModuleID, and Resolver source files 2013-01-10 16:06:13 -05:00
Mark Harrah caa1a4c583 API documentation for ModuleID methods 2013-01-10 16:06:12 -05:00
Mark Harrah a152965933 Option to automatically manage API documentation mappings
Set autoAPIMappings := true to enable.

Then, set apiURL to the base URL of the API documentation for a project.
This will get stored in an extra attribute in the ivy.xml or as a property
a pom.xml.

When using managed dependencies that have set their apiURL, the -doc-external-doc
setting for scaladoc will be automatically configured.  Note that this option
will only be available in Scala 2.10.1 and so enabling autoAPIMappings for
earlier versions will result in an error from scaladoc.

For unmanaged dependencies or dependencies without an automatic apiURL, add the
(File,URL) mapping to apiMappings.  The File is the classpath entry and the URL
is the location of the API documentation.
2013-01-10 16:06:12 -05:00
Mark Harrah 6a7540cf6f Disable Ivy debug-level logging (see elaboration below). Fixes #635.
The verbose-level logging is what usually contains relevant information for the user.
Persisting the debug logging slows down update noticeably and clutters the more useful
debug logging output from verbose.
2013-01-10 16:06:12 -05:00
Mark Harrah ce439efab3 Convert references to harrah/xsbt to sbt/sbt 2013-01-04 17:22:40 -05:00
Mark Harrah e3745540c9 More cleanup of Scala version handling, including managedScalaInstance to control automatic 'scala-tool' configuration and dependencies. 2012-12-09 20:40:41 -05:00
Grzegorz Kossakowski ef39aeb9c1 Follow source layout convention supported by Eclipse.
Moved source files so directory structure follow package
structure. That makes it possible to use Scala Eclipse plugin
with sbt's source code.
2012-12-07 10:27:08 -08:00
Mark Harrah 769ecbace5 add scala-tool configuration and dependencies when configuring via pom.xml/ivy.xml 2012-12-06 07:25:41 -05:00
Josh Suereth 0c08c1169e Bumped the Scalatest/Specs versions for 2.10.0-RC3
* Modified tests to use mutable Specs API
* Fixed a few minor specs issues.
2012-12-04 13:10:09 -05:00
Mark Harrah 5a45faf41b ConflictWarning cleanup, added strict convenience method for failing on any conflicts 2012-12-02 03:17:19 -05:00
Mark Harrah e47a357ab7 Resolve Scala version for projects in the normal `update` task.
1. Scala jars won't be copied to the boot directory, except for those needed to run sbt.
2. Scala SNAPSHOTs behave like normal SNAPSHOTs.  In particular, running `update` will properly re-resolve the dynamic revision.
3. Scala jars are resolved using the same repositories and configuration as other dependencies.
4. Classloaders (currently, Scala classloaders) are cached by the timestamps of entries instead of Scala class loaders being cached by version.

TODO: Support external dependency configuration
2012-11-17 20:23:06 -05:00
Mark Harrah 1c1e5c4977 taking care of deprecations removed in Scala master 2012-11-14 11:48:06 -05:00
Mark Harrah ce0284e187 Fixes #582. Don't merge dependencies with mismatched transitive/force/changing values.
This avoids the assertion, but note that Ivy is unlikely to work properly in this situation.
2012-11-12 14:45:36 -05:00
Mark Harrah e532d20732 cleanup of #585: compatible with earlier launchers 2012-10-29 09:52:10 -04:00