com-lihaoyi / mill

Mill is a fast JVM build tool that supports Java and Scala. 2-4x faster than Gradle and 4-10x faster than Maven for common workflows, Mill aims to make your project’s build process performant, maintainable, and flexible
https://mill-build.org/
MIT License
2.2k stars 350 forks source link

mill 0.11.2 does not resolve the javax.media maven organization properly. #2725

Open okennedy opened 1 year ago

okennedy commented 1 year ago

Reproduction steps:

  1. Create a project with a dependency on https://mvnrepository.com/artifact/org.geotools/gt-main
  2. Attempt to compile the project.

In mill 0.11.1, the project compiles properly. In mill 0.11.2, the project fails with an unresolved dependency:

___.resolvedIvyDeps Failed to load dependencies
  not found: https://repo1.maven.org/maven2/javax/media/jai_core/1.1.3/jai_core-1.1.3.jar

The correct URL should be javax.media, not javax/media

lefou commented 1 year ago

The URL to jai_core is correct. The URL exists: https://repo1.maven.org/maven2/javax/media/jai_core/1.1.3/ but there is no binary jar, only a pom and a javadoc jar. This is not a issue in Mill but with Maven central repo1. The pom states <packaging>jar</packaging> but there is no jar file.

In Maven repositories, dots in organization names are replaced by path separators. This is a difference to Ivy repositories.

okennedy commented 1 year ago

It's possible it's a different issue. I can confirm that the symptom is there: The project compiles correctly under mill 0.11.1, but not under .2 I can come up with a minimal reproduction later today.

lefou commented 1 year ago

Yeah, a repro would be nice.

lefou commented 1 year ago

There is probably a related issue in coursier: https://github.com/coursier/coursier/issues/2377

The latest comment is about the same sympton but in sbt. They switched from sbt 1.9.3 to 1.9.4. Sbt 1.9.4 as well as Mill 0.11.2 bumped their dependencies on coursier from 2.1.4 to 2.1.6. So, seeing the same issue (paired with a nice explanation in the linked issue) in sbt and Mill indicates an upstream issue in coursier 2.1.6.

okennedy commented 1 year ago

https://github.com/okennedy/mill_jai_repro

 okennedy  athena  ~  Desktop  JaiTest  main  $  mill version
[build.sc] [41/49] compile 
[info] compiling 1 Scala source to /home/okennedy/Desktop/JaiTest/out/mill-build/compile.dest/classes ...
[info] done compiling
[1/1] version 
0.11.1
 okennedy  athena  ~  Desktop  JaiTest  main  $  mill jaitest.compile
[33/33] jaitest.compile 
 okennedy  athena  ~  Desktop  JaiTest  main  $  coursier uninstall mill
Uninstalled mill
 okennedy  athena  ~  Desktop  JaiTest  main  $  coursier install mill:0.11.2
https://repo1.maven.org/maven2/io/get-coursier/apps/maven-metadata.xml
  No new update since 2023-08-16 10:52:10
Wrote mill
 okennedy  athena  ~  Desktop  JaiTest  main  $  mill jaitest.compile
[build.sc] [43/52] compile 
[info] compiling 1 Scala source to /home/okennedy/Desktop/JaiTest/out/mill-build/compile.dest/classes ...
[info] done compiling
[22/33] jaitest.resolvedIvyDeps 
1 targets failed
jaitest.resolvedIvyDeps Failed to load dependencies
  not found: https://repo1.maven.org/maven2/javax/media/jai_core/1.1.3/jai_core-1.1.3.jar
lefou commented 1 year ago

@okennedy You could try to remove the relevant path in your coursier cache and re-try.

okennedy commented 1 year ago

No effect:

 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  coursier uninstall mill
Uninstalled mill
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  coursier install mill:0.11.2
https://repo1.maven.org/maven2/io/get-coursier/apps/maven-metadata.xml
  No new update since 2023-08-16 10:52:10
Wrote mill
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  rm -rf ~/.cache/coursier/v1/https/repo1.maven.org/maven2/javax
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  mill jaitest.compile
[build.sc] [43/52] compile 
[info] compiling 1 Scala source to /home/okennedy/Desktop/mill_jai_repro/out/mill-build/compile.dest/classes ...
[info] done compiling
[22/33] jaitest.resolvedIvyDeps | Downloading [3/3] artifacts (~35607/35607 bytes)
1 targets failed
jaitest.resolvedIvyDeps Failed to load dependencies
  not found: https://repo1.maven.org/maven2/javax/media/jai_core/1.1.3/jai_core-1.1.3.jar
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  coursier uninstall mill
Uninstalled mill
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  coursier install mill:0.11.1
https://repo1.maven.org/maven2/io/get-coursier/apps/maven-metadata.xml
  No new update since 2023-08-16 10:52:10
https://repo1.maven.org/maven2/javax/enterprise/cdi-api/1.0/cdi-api-1.0.pom
  100.0% [##########] 1.4 KiB (46.7 KiB / s)
Wrote mill
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  rm -rf ~/.cache/coursier/v1/https/repo1.maven.org/maven2/javax
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $  mill jaitest.compile
[build.sc] [41/49] compile 
[info] compiling 1 Scala source to /home/okennedy/Desktop/mill_jai_repro/out/mill-build/compile.dest/classes ...
[info] done compiling
[33/33] jaitest.compile 
 okennedy  athena  ~  Desktop  mill_jai_repro  main  $ 