List of usage examples for org.apache.maven.model.building ModelProblem getException
Exception getException();
From source file:org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryStorage.java
License:Apache License
@Override public ProjectVersionMetadata readProjectVersionMetadata(ReadMetadataRequest readMetadataRequest) throws RepositoryStorageMetadataNotFoundException, RepositoryStorageMetadataInvalidException, RepositoryStorageRuntimeException { try {//from ww w . j a v a 2s . c om ManagedRepository managedRepository = managedRepositoryAdmin .getManagedRepository(readMetadataRequest.getRepositoryId()); String artifactVersion = readMetadataRequest.getProjectVersion(); // olamy: in case of browsing via the ui we can mix repos (parent of a SNAPSHOT can come from release repo) if (!readMetadataRequest.isBrowsingRequest()) { if (VersionUtil.isSnapshot(artifactVersion)) { // skygo trying to improve speed by honoring managed configuration MRM-1658 if (managedRepository.isReleases() && !managedRepository.isSnapshots()) { throw new RepositoryStorageRuntimeException("lookforsnaponreleaseonly", "managed repo is configured for release only"); } } else { if (!managedRepository.isReleases() && managedRepository.isSnapshots()) { throw new RepositoryStorageRuntimeException("lookforsreleaseonsneponly", "managed repo is configured for snapshot only"); } } } File basedir = new File(managedRepository.getLocation()); if (VersionUtil.isSnapshot(artifactVersion)) { File metadataFile = pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(), artifactVersion, METADATA_FILENAME); try { ArchivaRepositoryMetadata metadata = MavenMetadataReader.read(metadataFile); // re-adjust to timestamp if present, otherwise retain the original -SNAPSHOT filename SnapshotVersion snapshotVersion = metadata.getSnapshotVersion(); if (snapshotVersion != null) { artifactVersion = artifactVersion.substring(0, artifactVersion.length() - 8); // remove SNAPSHOT from end artifactVersion = artifactVersion + snapshotVersion.getTimestamp() + "-" + snapshotVersion.getBuildNumber(); } } catch (XMLException e) { // unable to parse metadata - LOGGER it, and continue with the version as the original SNAPSHOT version LOGGER.warn("Invalid metadata: {} - {}", metadataFile, e.getMessage()); } } // TODO: won't work well with some other layouts, might need to convert artifact parts to ID by path translator String id = readMetadataRequest.getProjectId() + "-" + artifactVersion + ".pom"; File file = pathTranslator.toFile(basedir, readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(), readMetadataRequest.getProjectVersion(), id); if (!file.exists()) { // metadata could not be resolved throw new RepositoryStorageMetadataNotFoundException( "The artifact's POM file '" + file.getAbsolutePath() + "' was missing"); } // TODO: this is a workaround until we can properly resolve using proxies as well - this doesn't cache // anything locally! List<RemoteRepository> remoteRepositories = new ArrayList<>(); Map<String, NetworkProxy> networkProxies = new HashMap<>(); Map<String, List<ProxyConnector>> proxyConnectorsMap = proxyConnectorAdmin.getProxyConnectorAsMap(); List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get(readMetadataRequest.getRepositoryId()); if (proxyConnectors != null) { for (ProxyConnector proxyConnector : proxyConnectors) { RemoteRepository remoteRepoConfig = remoteRepositoryAdmin .getRemoteRepository(proxyConnector.getTargetRepoId()); if (remoteRepoConfig != null) { remoteRepositories.add(remoteRepoConfig); NetworkProxy networkProxyConfig = networkProxyAdmin .getNetworkProxy(proxyConnector.getProxyId()); if (networkProxyConfig != null) { // key/value: remote repo ID/proxy info networkProxies.put(proxyConnector.getTargetRepoId(), networkProxyConfig); } } } } // That's a browsing request so we can a mix of SNAPSHOT and release artifacts (especially with snapshots which // can have released parent pom if (readMetadataRequest.isBrowsingRequest()) { remoteRepositories.addAll(remoteRepositoryAdmin.getRemoteRepositories()); } ModelBuildingRequest req = new DefaultModelBuildingRequest().setProcessPlugins(false).setPomFile(file) .setTwoPhaseBuilding(false).setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); //MRM-1607. olamy this will resolve jdk profiles on the current running archiva jvm req.setSystemProperties(System.getProperties()); // MRM-1411 req.setModelResolver(new RepositoryModelResolver(managedRepository, pathTranslator, wagonFactory, remoteRepositories, networkProxies, managedRepository)); Model model; try { model = builder.build(req).getEffectiveModel(); } catch (ModelBuildingException e) { String msg = "The artifact's POM file '" + file + "' was invalid: " + e.getMessage(); List<ModelProblem> modelProblems = e.getProblems(); for (ModelProblem problem : modelProblems) { // MRM-1411, related to MRM-1335 // this means that the problem was that the parent wasn't resolved! // olamy really hackhish but fail with java profile so use error message // || ( StringUtils.startsWith( problem.getMessage(), "Failed to determine Java version for profile" ) ) // but setTwoPhaseBuilding(true) fix that if ((problem.getException() instanceof FileNotFoundException && e.getModelId() != null && !e.getModelId().equals(problem.getModelId()))) { LOGGER.warn("The artifact's parent POM file '{}' cannot be resolved. " + "Using defaults for project version metadata..", file); ProjectVersionMetadata metadata = new ProjectVersionMetadata(); metadata.setId(readMetadataRequest.getProjectVersion()); MavenProjectFacet facet = new MavenProjectFacet(); facet.setGroupId(readMetadataRequest.getNamespace()); facet.setArtifactId(readMetadataRequest.getProjectId()); facet.setPackaging("jar"); metadata.addFacet(facet); String errMsg = "Error in resolving artifact's parent POM file. " + (problem.getException() == null ? problem.getMessage() : problem.getException().getMessage()); RepositoryProblemFacet repoProblemFacet = new RepositoryProblemFacet(); repoProblemFacet.setRepositoryId(readMetadataRequest.getRepositoryId()); repoProblemFacet.setId(readMetadataRequest.getRepositoryId()); repoProblemFacet.setMessage(errMsg); repoProblemFacet.setProblem(errMsg); repoProblemFacet.setProject(readMetadataRequest.getProjectId()); repoProblemFacet.setVersion(readMetadataRequest.getProjectVersion()); repoProblemFacet.setNamespace(readMetadataRequest.getNamespace()); metadata.addFacet(repoProblemFacet); return metadata; } } throw new RepositoryStorageMetadataInvalidException("invalid-pom", msg, e); } // Check if the POM is in the correct location boolean correctGroupId = readMetadataRequest.getNamespace().equals(model.getGroupId()); boolean correctArtifactId = readMetadataRequest.getProjectId().equals(model.getArtifactId()); boolean correctVersion = readMetadataRequest.getProjectVersion().equals(model.getVersion()); if (!correctGroupId || !correctArtifactId || !correctVersion) { StringBuilder message = new StringBuilder("Incorrect POM coordinates in '" + file + "':"); if (!correctGroupId) { message.append("\nIncorrect group ID: ").append(model.getGroupId()); } if (!correctArtifactId) { message.append("\nIncorrect artifact ID: ").append(model.getArtifactId()); } if (!correctVersion) { message.append("\nIncorrect version: ").append(model.getVersion()); } throw new RepositoryStorageMetadataInvalidException("mislocated-pom", message.toString()); } ProjectVersionMetadata metadata = new ProjectVersionMetadata(); metadata.setCiManagement(convertCiManagement(model.getCiManagement())); metadata.setDescription(model.getDescription()); metadata.setId(readMetadataRequest.getProjectVersion()); metadata.setIssueManagement(convertIssueManagement(model.getIssueManagement())); metadata.setLicenses(convertLicenses(model.getLicenses())); metadata.setMailingLists(convertMailingLists(model.getMailingLists())); metadata.setDependencies(convertDependencies(model.getDependencies())); metadata.setName(model.getName()); metadata.setOrganization(convertOrganization(model.getOrganization())); metadata.setScm(convertScm(model.getScm())); metadata.setUrl(model.getUrl()); metadata.setProperties(model.getProperties()); MavenProjectFacet facet = new MavenProjectFacet(); facet.setGroupId(model.getGroupId() != null ? model.getGroupId() : model.getParent().getGroupId()); facet.setArtifactId(model.getArtifactId()); facet.setPackaging(model.getPackaging()); if (model.getParent() != null) { MavenProjectParent parent = new MavenProjectParent(); parent.setGroupId(model.getParent().getGroupId()); parent.setArtifactId(model.getParent().getArtifactId()); parent.setVersion(model.getParent().getVersion()); facet.setParent(parent); } metadata.addFacet(facet); return metadata; } catch (RepositoryAdminException e) { throw new RepositoryStorageRuntimeException("repo-admin", e.getMessage(), e); } }
From source file:org.commonjava.emb.project.ProjectLoader.java
License:Apache License
public List<MavenProject> buildReactorProjectInstances(final ProjectToolsSession session, final File... rootPoms) throws ProjectToolsException { final ProjectBuildingRequest pbr = sessionInjector.getProjectBuildingRequest(session); try {//from w ww. j a va2s .c o m final List<File> pomFiles = Arrays.asList(rootPoms); final List<ProjectBuildingResult> results = projectBuilder.build(pomFiles, true, pbr); final List<MavenProject> projects = new ArrayList<MavenProject>(results.size()); for (final ProjectBuildingResult result : results) { final MavenProject project = result.getProject(); project.setRemoteArtifactRepositories(session.getRemoteArtifactRepositories()); projects.add(project); } session.setReactorProjects(projects); if (LOGGER.isDebugEnabled()) { LOGGER.debug( "Adding projects to dependency graph:\n\t" + StringUtils.join(projects.iterator(), "\n\t")); } addProjects(session, projects); return projects; } catch (final ProjectBuildingException e) { // logger.error( "Failed to build MavenProject instances from POM files for sorting: " + e.getMessage(), e // ); final List<ProjectBuildingResult> results = e.getResults(); final StringBuilder sb = new StringBuilder(); if (results == null) { sb.append("Cannot build reactor project instances for root-POM: ").append(rootPoms); final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); e.printStackTrace(pWriter); sb.append("\n").append(sWriter); } else { int i = 0; for (final ProjectBuildingResult result : results) { final List<ModelProblem> problems = result.getProblems(); if (problems != null && !problems.isEmpty()) { sb.append("\n").append(result.getProjectId()); for (final ModelProblem problem : problems) { sb.append("\n\t").append(problem.getMessage()).append("\n\t\t") .append(problem.getSource()).append("@").append(problem.getLineNumber()) .append(":" + problem.getColumnNumber()); if (problem.getException() != null) { final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); problem.getException().printStackTrace(pWriter); sb.append("\n").append(sWriter); } sb.append((++i)).append(" ").append(sb); } } } } throw new ProjectToolsException("Failed to build project instance. \n\n%s", e, sb); } }
From source file:org.commonjava.emb.project.ProjectLoader.java
License:Apache License
public MavenProject buildProjectInstance(final File pomFile, final ProjectToolsSession session) throws ProjectToolsException { final ProjectBuildingRequest pbr = sessionInjector.getProjectBuildingRequest(session); try {/* ww w.ja v a 2 s.c om*/ final ProjectBuildingResult result = projectBuilder.build(pomFile, pbr); final MavenProject project = result.getProject(); project.setRemoteArtifactRepositories(session.getRemoteArtifactRepositories()); addProjects(session, project); return project; } catch (final ProjectBuildingException e) { // logger.error( "Failed to build MavenProject instances from POM files for sorting: " + e.getMessage(), e // ); final List<ProjectBuildingResult> results = e.getResults(); final StringBuilder sb = new StringBuilder(); if (results == null) { sb.append("Cannot build project instance for: ").append(pomFile); final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); e.printStackTrace(pWriter); sb.append("\n").append(sWriter); } else { int i = 0; for (final ProjectBuildingResult result : results) { final List<ModelProblem> problems = result.getProblems(); for (final ModelProblem problem : problems) { sb.append(problem.getMessage()).append("\n\t").append(problem.getSource()).append("@") .append(problem.getLineNumber()).append(":" + problem.getColumnNumber()); if (problem.getException() != null) { final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); problem.getException().printStackTrace(pWriter); sb.append("\n").append(sWriter); } sb.append((++i)).append(" ").append(sb); } } } throw new ProjectToolsException("Failed to build project instance. \n\n%s", e, sb); } }
From source file:org.commonjava.emb.project.ProjectLoader.java
License:Apache License
public MavenProject buildProjectInstance(final String groupId, final String artifactId, final String version, final ProjectToolsSession session) throws ProjectToolsException { final ProjectBuildingRequest req = sessionInjector.getProjectBuildingRequest(session); try {/*from ww w . ja va 2 s .c om*/ final org.apache.maven.artifact.Artifact pomArtifact = mavenRepositorySystem.createArtifact(groupId, artifactId, version, "pom"); final Artifact aetherPomArtifact = RepositoryUtils.toArtifact(pomArtifact); final ArtifactRequest artifactRequest = new ArtifactRequest(aetherPomArtifact, sessionInjector.getRemoteRepositories(session), "project"); final ArtifactResult artifactResult = aetherRepositorySystem.resolveArtifact(req.getRepositorySession(), artifactRequest); final File pomFile = artifactResult.getArtifact().getFile(); final ProjectBuildingResult result = projectBuilder.build(pomFile, req); final MavenProject project = result.getProject(); project.setRemoteArtifactRepositories(session.getRemoteArtifactRepositories()); project.setFile(pomFile); addProjects(session, project); return project; } catch (final ProjectBuildingException e) { // logger.error( "Failed to build MavenProject instances from POM files for sorting: " + e.getMessage(), e // ); final List<ProjectBuildingResult> results = e.getResults(); final StringBuilder sb = new StringBuilder(); int i = 0; if (results == null) { sb.append("Cannot build project instance for: ").append(groupId).append(':').append(artifactId) .append(':').append(version); final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); e.printStackTrace(pWriter); sb.append("\n").append(sWriter); } else { for (final ProjectBuildingResult result : results) { final List<ModelProblem> problems = result.getProblems(); for (final ModelProblem problem : problems) { sb.append(problem.getMessage()).append("\n\t").append(problem.getSource()).append("@") .append(problem.getLineNumber()).append(":" + problem.getColumnNumber()); if (problem.getException() != null) { final StringWriter sWriter = new StringWriter(); final PrintWriter pWriter = new PrintWriter(sWriter); problem.getException().printStackTrace(pWriter); sb.append("\n").append(sWriter); } sb.append((++i)).append(" ").append(sb); } } } throw new ProjectToolsException("Failed to build project instance. \n\n%s", e, sb); } catch (final ArtifactResolutionException e) { throw new ProjectToolsException("Failed to resolve POM: %s:%s:%s\nReason: %s", e, groupId, artifactId, version, e.getMessage()); } }