Skip to content

Commit 4f3995a

Browse files
committed
Deprecate Ivy artifact syntax for %maven magic #90
1 parent 9246576 commit 4f3995a

3 files changed

Lines changed: 18 additions & 8 deletions

File tree

RELEASE-NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
- #84 Refactoring: reorg Maven modules for reusability
1515
- #86 ineffecient / incorrect classpath handling
1616
- #89 Deprecate redundant magics: %jars, %addMavenDependency
17+
- #90 Deprecate Ivy artifact syntax for %maven magic
1718

1819
## 1.0-a5
1920

jjava-distro/src/test/java/org/dflib/jjava/distro/KernelMagicIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ public void maven() throws Exception {
5757
assertThat(snippetResult.getStdout(), containsString("dflib-jupyter-1.0.0-RC1.jar"));
5858
}
5959

60+
@Deprecated
6061
@Test
61-
public void addIvyDependency() throws Exception {
62+
public void mavenIvySyntax() throws Exception {
6263
String snippet = String.join("\n",
6364
"%maven jakarta.annotation#jakarta.annotation-api;3.0.0",
6465
"System.getProperty(\"java.class.path\")"

jjava-maven/src/main/java/org/dfllib/jjava/maven/MavenDependencyResolver.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class MavenDependencyResolver {
3939
/**
4040
* Ivy artifact coordinates in the form organization#name[#branch];revision.
4141
*/
42+
@Deprecated(since = "1.0", forRemoval = true)
4243
private static final Pattern IVY_MRID_PATTERN = Pattern.compile(
4344
"^(?<organization>[-\\w/._+=]*)#(?<name>[-\\w/._+=]+)(?:#(?<branch>[-\\w/._+=]+))?;(?<revision>[-\\w/._+=,\\[\\]{}():@]+)$"
4445
);
@@ -49,13 +50,20 @@ private static RemoteRepository mavenRepo(String id, String url) {
4950

5051
private static Artifact parseArtifact(String coordinates) {
5152
Matcher ivyMatcher = IVY_MRID_PATTERN.matcher(coordinates);
52-
if (ivyMatcher.matches()) {
53-
String organization = ivyMatcher.group("organization");
54-
String name = ivyMatcher.group("name");
55-
String revision = ivyMatcher.group("revision");
56-
return new DefaultArtifact(organization, name, "jar", revision);
57-
}
58-
return new DefaultArtifact(coordinates);
53+
return ivyMatcher.matches() ? parseIvyArtifact(ivyMatcher, coordinates) : new DefaultArtifact(coordinates);
54+
}
55+
56+
@Deprecated(since = "1.0", forRemoval = true)
57+
private static Artifact parseIvyArtifact(Matcher matcher, String coordinates) {
58+
System.err.println("Detected Ivy artifact syntax in the '%maven' magic arguments: '"
59+
+ coordinates
60+
+ "'. Support for it is deprecated and will be removed in the future versions of JJava. "
61+
+ "Use Maven colon-separated syntax instead");
62+
63+
String organization = matcher.group("organization");
64+
String name = matcher.group("name");
65+
String revision = matcher.group("revision");
66+
return new DefaultArtifact(organization, name, "jar", revision);
5967
}
6068

6169
private final List<RemoteRepository> repositories;

0 commit comments

Comments
 (0)