in src/main/java/org/apache/maven/plugins/install/InstallFileMojo.java [166:271]
public void execute() throws MojoExecutionException, MojoFailureException {
if (!file.exists()) {
String message = "The specified file '" + file.getPath() + "' does not exist";
getLog().error(message);
throw new MojoFailureException(message);
}
RepositorySystemSession repositorySystemSession = session.getRepositorySession();
if (localRepositoryPath != null) {
// "clone" repository session and replace localRepository
DefaultRepositorySystemSession newSession =
new DefaultRepositorySystemSession(session.getRepositorySession());
// Clear cache, since we're using a new local repository
newSession.setCache(new DefaultRepositoryCache());
// keep same repositoryType
String contentType = newSession.getLocalRepository().getContentType();
if ("enhanced".equals(contentType)) {
contentType = "default";
}
LocalRepositoryManager localRepositoryManager = repositorySystem.newLocalRepositoryManager(
newSession, new LocalRepository(localRepositoryPath, contentType));
newSession.setLocalRepositoryManager(localRepositoryManager);
repositorySystemSession = newSession;
getLog().debug("localRepoPath: "
+ localRepositoryManager.getRepository().getBasedir());
}
File temporaryPom = null;
if (pomFile != null) {
processModel(readModel(pomFile));
} else {
temporaryPom = readingPomFromJarFile();
if (!Boolean.TRUE.equals(generatePom)) {
pomFile = temporaryPom;
getLog().debug("Using JAR embedded POM as pomFile");
}
}
if (groupId == null || artifactId == null || version == null || packaging == null) {
throw new MojoExecutionException("The artifact information is incomplete: 'groupId', 'artifactId', "
+ "'version' and 'packaging' are required.");
}
if (!isValidId(groupId) || !isValidId(artifactId) || !isValidVersion(version)) {
throw new MojoExecutionException("The artifact information is not valid: uses invalid characters.");
}
InstallRequest installRequest = new InstallRequest();
boolean isFilePom = classifier == null && "pom".equals(packaging);
if (!isFilePom) {
ArtifactType artifactType =
repositorySystemSession.getArtifactTypeRegistry().get(packaging);
if (artifactType != null
&& (classifier == null || classifier.isEmpty())
&& !StringUtils.isEmpty(artifactType.getClassifier())) {
classifier = artifactType.getClassifier();
}
}
Artifact mainArtifact = new DefaultArtifact(
groupId, artifactId, classifier, isFilePom ? "pom" : getExtension(file), version)
.setFile(file);
installRequest.addArtifact(mainArtifact);
File artifactLocalFile = getLocalRepositoryFile(repositorySystemSession, mainArtifact);
File pomLocalFile = getPomLocalRepositoryFile(repositorySystemSession, mainArtifact);
if (file.equals(artifactLocalFile)) {
throw new MojoFailureException("Cannot install artifact. " + "Artifact is already in the local repository."
+ LS + LS + "File in question is: " + file + LS);
}
if (!"pom".equals(packaging)) {
if (pomFile != null) {
installRequest.addArtifact(new SubArtifact(mainArtifact, "", "pom", pomFile));
} else {
if (Boolean.TRUE.equals(generatePom) || (generatePom == null && !pomLocalFile.exists())) {
temporaryPom = generatePomFile();
getLog().debug("Installing generated POM");
installRequest.addArtifact(new SubArtifact(mainArtifact, "", "pom", temporaryPom));
} else if (generatePom == null) {
getLog().debug("Skipping installation of generated POM, already present in local repository");
}
}
}
if (sources != null) {
installRequest.addArtifact(new SubArtifact(mainArtifact, "sources", "jar", sources));
}
if (javadoc != null) {
installRequest.addArtifact(new SubArtifact(mainArtifact, "javadoc", "jar", javadoc));
}
try {
repositorySystem.install(repositorySystemSession, installRequest);
} catch (InstallationException e) {
throw new MojoExecutionException(e.getMessage(), e);
} finally {
if (temporaryPom != null) {
// noinspection ResultOfMethodCallIgnored
temporaryPom.delete();
}
}
}