1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.github.maven_nar;
21
22 import java.io.File;
23
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.artifact.DefaultArtifact;
26 import org.apache.maven.artifact.handler.ArtifactHandler;
27 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
28 import org.apache.maven.artifact.versioning.VersionRange;
29
30
31
32
33
34
35 public class AttachedNarArtifact extends DefaultArtifact {
36 private class Handler implements ArtifactHandler {
37 private final String classifier;
38
39 Handler(final String classifier) {
40 this.classifier = classifier;
41 }
42
43 @Override
44 public String getClassifier() {
45 return this.classifier;
46 }
47
48 @Override
49 public String getDirectory() {
50 return "nars";
51 }
52
53 @Override
54 public String getExtension() {
55 return "nar";
56 }
57
58 @Override
59 public String getLanguage() {
60 return "native";
61 }
62
63 @Override
64 public String getPackaging() {
65 return "nar";
66 }
67
68 @Override
69 public boolean isAddedToClasspath() {
70 return true;
71 }
72
73 @Override
74 public boolean isIncludesDependencies() {
75 return false;
76 }
77 }
78
79
80 public AttachedNarArtifact(final Artifact parent, final String type, final String classifier) {
81 super(parent.getGroupId(), parent.getArtifactId(), parent.getVersionRange(), parent.getScope(), type, classifier,
82 null, parent.isOptional());
83 setArtifactHandler(new Handler(classifier));
84 }
85
86 public AttachedNarArtifact(final String groupId, final String artifactId, final String version, final String scope,
87 final String type, final String classifier, final boolean optional, final File file)
88 throws InvalidVersionSpecificationException {
89 super(groupId, artifactId, VersionRange.createFromVersionSpec(version), scope, type, classifier, null, optional);
90 setArtifactHandler(new Handler(classifier));
91 setFile(new File(file.getParentFile(), artifactId + "-" + VersionRange.createFromVersionSpec(version) + "-"
92 + classifier + "." + type));
93 }
94 }