Adding support for maven multi module projects
This commit is contained in:
Vendored
-18
@@ -4,23 +4,5 @@
|
|||||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
<<<<<<< HEAD
|
|
||||||
{
|
|
||||||
"type": "node",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "Launch Program",
|
|
||||||
"skipFiles": [
|
|
||||||
"<node_internals>/**"
|
|
||||||
],
|
|
||||||
"program": "${workspaceFolder}/node_modules/.bin/mocha",
|
|
||||||
"args": [
|
|
||||||
"-r",
|
|
||||||
"ts-node/register",
|
|
||||||
"--colors",
|
|
||||||
"${workspaceFolder}/src/depgraph.test.ts"
|
|
||||||
],
|
|
||||||
}
|
|
||||||
=======
|
|
||||||
>>>>>>> 4b5ca60 (Initial commit)
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Vendored
+2
-26
@@ -1,26 +1,4 @@
|
|||||||
{
|
{
|
||||||
<<<<<<< HEAD
|
|
||||||
"debug.onTaskErrors": "showErrors",
|
|
||||||
"files.trimTrailingWhitespace": true,
|
|
||||||
"editor.tabSize": 2,
|
|
||||||
"editor.insertSpaces": true,
|
|
||||||
"editor.detectIndentation": false,
|
|
||||||
"[javascript]": {
|
|
||||||
"editor.tabSize": 2
|
|
||||||
},
|
|
||||||
"[json]": {
|
|
||||||
"editor.tabSize": 2
|
|
||||||
},
|
|
||||||
"[yaml]": {
|
|
||||||
"editor.tabSize": 2
|
|
||||||
},
|
|
||||||
"[html]": {
|
|
||||||
"editor.tabSize": 2
|
|
||||||
},
|
|
||||||
// GitHub Codespace Theme
|
|
||||||
"workbench.colorTheme": "GitHub Dark Dimmed"
|
|
||||||
}
|
|
||||||
=======
|
|
||||||
"debug.onTaskErrors": "showErrors",
|
"debug.onTaskErrors": "showErrors",
|
||||||
"files.trimTrailingWhitespace": true,
|
"files.trimTrailingWhitespace": true,
|
||||||
"editor.tabSize": 2,
|
"editor.tabSize": 2,
|
||||||
@@ -41,8 +19,6 @@
|
|||||||
// GitHub Codespace Theme
|
// GitHub Codespace Theme
|
||||||
"workbench.colorTheme": "GitHub Dark Dimmed",
|
"workbench.colorTheme": "GitHub Dark Dimmed",
|
||||||
"jest.autoRun": {
|
"jest.autoRun": {
|
||||||
"watch": false,
|
"watch": false
|
||||||
"onSave": "test-file"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>>>>>>> 4b5ca60 (Initial commit)
|
|
||||||
@@ -16,6 +16,11 @@ inputs:
|
|||||||
type: string
|
type: string
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
|
|
||||||
|
github-api-url:
|
||||||
|
description: The URL to the GitHub API to use to publish the results to, defaults to reading this from the Actions environment
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: node16
|
using: node16
|
||||||
main: dist/index.js
|
main: dist/index.js
|
||||||
|
|||||||
Vendored
+62
-19
@@ -35,8 +35,6 @@ const fs = __importStar(__nccwpck_require__(7147));
|
|||||||
const packageurl_js_1 = __nccwpck_require__(8915);
|
const packageurl_js_1 = __nccwpck_require__(8915);
|
||||||
const dependency_submission_toolkit_1 = __nccwpck_require__(9810);
|
const dependency_submission_toolkit_1 = __nccwpck_require__(9810);
|
||||||
class MavenDependencyGraph {
|
class MavenDependencyGraph {
|
||||||
// //@ ts-ignore
|
|
||||||
// private rootPackage: DepgraphArtifact;
|
|
||||||
constructor(graph) {
|
constructor(graph) {
|
||||||
this.depGraph = graph;
|
this.depGraph = graph;
|
||||||
this.cache = new dependency_submission_toolkit_1.PackageCache();
|
this.cache = new dependency_submission_toolkit_1.PackageCache();
|
||||||
@@ -85,9 +83,9 @@ class MavenDependencyGraph {
|
|||||||
parseDependencies() {
|
parseDependencies() {
|
||||||
const graph = this.depGraph;
|
const graph = this.depGraph;
|
||||||
const cache = this.cache;
|
const cache = this.cache;
|
||||||
const rootPackageArtifactId = graph.graphName;
|
const rootArtifactIds = [];
|
||||||
let rootPackageNumericId = 0;
|
|
||||||
const dependencyIdMap = dependencyMap(graph.dependencies);
|
const dependencyIdMap = dependencyMap(graph.dependencies);
|
||||||
|
const dependencyArtifactIdsWithParents = extractDependencyArtifactIdsWithParents(graph.dependencies);
|
||||||
const idToPackageCachePackage = new Map();
|
const idToPackageCachePackage = new Map();
|
||||||
// Create the packages for all known artifacts
|
// Create the packages for all known artifacts
|
||||||
graph.artifacts.forEach((artifact) => {
|
graph.artifacts.forEach((artifact) => {
|
||||||
@@ -96,8 +94,8 @@ class MavenDependencyGraph {
|
|||||||
idToPackageCachePackage[artifact.id] = pkg;
|
idToPackageCachePackage[artifact.id] = pkg;
|
||||||
// Store a reference from the package URL to the original artifact as the artifact has extra metadata we need later for scopes and optionality
|
// Store a reference from the package URL to the original artifact as the artifact has extra metadata we need later for scopes and optionality
|
||||||
this.packageUrlToArtifact[artifactUrl.toString()] = artifact;
|
this.packageUrlToArtifact[artifactUrl.toString()] = artifact;
|
||||||
if (artifact.artifactId === rootPackageArtifactId) {
|
if (dependencyArtifactIdsWithParents.indexOf(artifact.id) === -1) {
|
||||||
rootPackageNumericId = artifact.numericId - 1;
|
rootArtifactIds.push(artifact.id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Now that all packages are known, process the dependencies for each and link them
|
// Now that all packages are known, process the dependencies for each and link them
|
||||||
@@ -118,15 +116,27 @@ class MavenDependencyGraph {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.directDependencies = getDirectDependencies(rootPackageNumericId, graph.dependencies).map(id => { return idToPackageCachePackage[id]; });
|
const uniqueRootArtifactDependencies = [];
|
||||||
|
rootArtifactIds.forEach(rootArtifactId => {
|
||||||
|
const dependencyIds = getDirectDependencies(rootArtifactId, graph.dependencies);
|
||||||
|
if (dependencyIds) {
|
||||||
|
dependencyIds.forEach(dependencyId => {
|
||||||
|
if (uniqueRootArtifactDependencies.indexOf(dependencyId) === -1) {
|
||||||
|
uniqueRootArtifactDependencies.push(dependencyId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.directDependencies = uniqueRootArtifactDependencies.map(depId => idToPackageCachePackage[depId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.MavenDependencyGraph = MavenDependencyGraph;
|
exports.MavenDependencyGraph = MavenDependencyGraph;
|
||||||
function parseDependencyJson(file) {
|
function parseDependencyJson(file, isMultiModule = false) {
|
||||||
try {
|
try {
|
||||||
const data = fs.readFileSync(file);
|
const data = fs.readFileSync(file);
|
||||||
try {
|
try {
|
||||||
const depGraph = JSON.parse(data.toString('utf-8'));
|
const depGraph = JSON.parse(data.toString('utf-8'));
|
||||||
|
depGraph.isMultiModule = isMultiModule;
|
||||||
return depGraph;
|
return depGraph;
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
@@ -153,6 +163,9 @@ function getDependencyScopeForMavenScope(mavenScopes) {
|
|||||||
// The default scope for now as we only have runtime and development currently
|
// The default scope for now as we only have runtime and development currently
|
||||||
return 'runtime';
|
return 'runtime';
|
||||||
}
|
}
|
||||||
|
function extractDependencyArtifactIdsWithParents(dependencies) {
|
||||||
|
return dependencies.map(dependency => { return dependency.to; });
|
||||||
|
}
|
||||||
function dependencyMap(dependencies) {
|
function dependencyMap(dependencies) {
|
||||||
const map = new Map();
|
const map = new Map();
|
||||||
dependencies.forEach(dependency => {
|
dependencies.forEach(dependency => {
|
||||||
@@ -166,8 +179,8 @@ function dependencyMap(dependencies) {
|
|||||||
});
|
});
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
function getDirectDependencies(rootPackageNumericId, dependencies) {
|
function getDirectDependencies(artifactId, dependencies) {
|
||||||
const topLevel = dependencies.filter(dependency => { return dependency.numericFrom === rootPackageNumericId; });
|
const topLevel = dependencies.filter(dependency => { return dependency.from === artifactId; });
|
||||||
return topLevel.map(dep => { return dep.to; });
|
return topLevel.map(dep => { return dep.to; });
|
||||||
}
|
}
|
||||||
//# sourceMappingURL=depgraph.js.map
|
//# sourceMappingURL=depgraph.js.map
|
||||||
@@ -283,9 +296,11 @@ exports.generateDependencyGraph = exports.generateSnapshot = void 0;
|
|||||||
const exec = __importStar(__nccwpck_require__(1514));
|
const exec = __importStar(__nccwpck_require__(1514));
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const path = __importStar(__nccwpck_require__(1017));
|
const path = __importStar(__nccwpck_require__(1017));
|
||||||
|
const fs = __importStar(__nccwpck_require__(7147));
|
||||||
const dependency_submission_toolkit_1 = __nccwpck_require__(9810);
|
const dependency_submission_toolkit_1 = __nccwpck_require__(9810);
|
||||||
const depgraph_1 = __nccwpck_require__(8047);
|
const depgraph_1 = __nccwpck_require__(8047);
|
||||||
const version = (__nccwpck_require__(2876)/* .version */ .i8);
|
const version = (__nccwpck_require__(2876)/* .version */ .i8);
|
||||||
|
const DEPGRAPH_MAVEN_PLUGIN_VERSION = '4.0.2';
|
||||||
function generateSnapshot(directory, context, job) {
|
function generateSnapshot(directory, context, job) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const depgraph = yield generateDependencyGraph(directory);
|
const depgraph = yield generateDependencyGraph(directory);
|
||||||
@@ -326,12 +341,23 @@ function generateDependencyGraph(directory) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const mavenArguments = [
|
core.startGroup('depgraph-maven-plugin:reactor');
|
||||||
'com.github.ferstl:depgraph-maven-plugin:4.0.1:graph',
|
const mavenReactorArguments = [
|
||||||
|
`com.github.ferstl:depgraph-maven-plugin:${DEPGRAPH_MAVEN_PLUGIN_VERSION}:reactor`,
|
||||||
'-DgraphFormat=json',
|
'-DgraphFormat=json',
|
||||||
|
'-DoutputFileName=reactor.json'
|
||||||
];
|
];
|
||||||
core.startGroup('depgraph-maven-plugin');
|
yield exec.exec('mvn', mavenReactorArguments, options);
|
||||||
yield exec.exec('mvn', mavenArguments, options);
|
core.info(executionOutput);
|
||||||
|
core.info(errors);
|
||||||
|
core.endGroup();
|
||||||
|
core.startGroup('depgraph-maven-plugin:aggregate');
|
||||||
|
const mavenAggregateArguments = [
|
||||||
|
`com.github.ferstl:depgraph-maven-plugin:${DEPGRAPH_MAVEN_PLUGIN_VERSION}:aggregate`,
|
||||||
|
'-DgraphFormat=json',
|
||||||
|
'-DoutputFileName=aggregate-depgraph.json'
|
||||||
|
];
|
||||||
|
yield exec.exec('mvn', mavenAggregateArguments, options);
|
||||||
core.info(executionOutput);
|
core.info(executionOutput);
|
||||||
core.info(errors);
|
core.info(errors);
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
@@ -340,11 +366,12 @@ function generateDependencyGraph(directory) {
|
|||||||
core.error(err);
|
core.error(err);
|
||||||
throw new Error(`A problem was encountered generating dependency files, please check execution logs for details; ${err.message}`);
|
throw new Error(`A problem was encountered generating dependency files, please check execution logs for details; ${err.message}`);
|
||||||
}
|
}
|
||||||
//TODO need to account for multi module projects
|
const targetPath = path.join(directory, 'target');
|
||||||
// Now we have the target/dependency-graph.json file to process
|
const isMultiModule = checkForMultiModule(path.join(targetPath, 'reactor.json'));
|
||||||
const file = path.join(directory, 'target', 'dependency-graph.json');
|
// Now we have the aggregate dependency graph file to process
|
||||||
|
const file = path.join(targetPath, 'aggregate-depgraph.json');
|
||||||
try {
|
try {
|
||||||
return (0, depgraph_1.parseDependencyJson)(file);
|
return (0, depgraph_1.parseDependencyJson)(file, isMultiModule);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
core.error(err);
|
core.error(err);
|
||||||
@@ -353,6 +380,22 @@ function generateDependencyGraph(directory) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
exports.generateDependencyGraph = generateDependencyGraph;
|
exports.generateDependencyGraph = generateDependencyGraph;
|
||||||
|
function checkForMultiModule(reactorJsonFile) {
|
||||||
|
try {
|
||||||
|
const data = fs.readFileSync(reactorJsonFile);
|
||||||
|
try {
|
||||||
|
const reactor = JSON.parse(data.toString('utf-8'));
|
||||||
|
// The reactor file will have an array of artifacts making up the parent and child modules if it is a multi module project
|
||||||
|
return reactor.artifacts && reactor.artifacts.length > 0;
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
throw new Error(`Failed to parse reactor JSON payload: ${err.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
throw new Error(`Failed to load file ${reactorJsonFile}: ${err}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
//# sourceMappingURL=snapshot-generator.js.map
|
//# sourceMappingURL=snapshot-generator.js.map
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
@@ -15647,7 +15690,7 @@ module.exports = require("zlib");
|
|||||||
/***/ ((module) => {
|
/***/ ((module) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
module.exports = {"i8":"2.0.1"};
|
module.exports = {"i8":"3.0.0"};
|
||||||
|
|
||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "maven-dependency-tree-action",
|
"name": "maven-dependency-tree-action",
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "maven-dependency-tree-action",
|
"name": "maven-dependency-tree-action",
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "maven-dependency-tree-action",
|
"name": "maven-dependency-tree-action",
|
||||||
"version": "2.0.1",
|
"version": "3.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+26
-2
@@ -30,7 +30,7 @@ describe('depgraph', () => {
|
|||||||
|
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
depGraph = parseDependencyJson(getTestDataFile('maven-plugin'));
|
depGraph = parseDependencyJson(getTestDataFile('maven-plugin'));
|
||||||
})
|
});
|
||||||
|
|
||||||
it('should parse out the top level dependencies', () => {
|
it('should parse out the top level dependencies', () => {
|
||||||
const mavenDependencies = new MavenDependencyGraph(depGraph);
|
const mavenDependencies = new MavenDependencyGraph(depGraph);
|
||||||
@@ -94,7 +94,7 @@ describe('depgraph', () => {
|
|||||||
|
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
depGraph = parseDependencyJson(getTestDataFile('bookstore-v3'));
|
depGraph = parseDependencyJson(getTestDataFile('bookstore-v3'));
|
||||||
})
|
});
|
||||||
|
|
||||||
it('should parse out the top level dependencies', () => {
|
it('should parse out the top level dependencies', () => {
|
||||||
const mavenDependencies = new MavenDependencyGraph(depGraph);
|
const mavenDependencies = new MavenDependencyGraph(depGraph);
|
||||||
@@ -114,6 +114,30 @@ describe('depgraph', () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe('bs-parent-dep-tree', () => {
|
||||||
|
|
||||||
|
let depGraph;
|
||||||
|
|
||||||
|
beforeAll(() => {
|
||||||
|
depGraph = parseDependencyJson(getTestDataFile('bs-parent-dep-tree'));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse out the top level dependencies', () => {
|
||||||
|
const mavenDependencies = new MavenDependencyGraph(depGraph);
|
||||||
|
const topLevelDependencies = mavenDependencies.getDirectDependencies();
|
||||||
|
|
||||||
|
expect(mavenDependencies.getPackageCount()).to.equal(19);
|
||||||
|
|
||||||
|
const topLevelNames = topLevelDependencies.map(pkg => pkg.packageID());
|
||||||
|
expect(topLevelNames).to.have.members([
|
||||||
|
"pkg:maven/org.eclipse.jetty/jetty-server@10.0.10",
|
||||||
|
"pkg:maven/com.github.octodemo/bs-library@1.0.0-SNAPSHOT",
|
||||||
|
"pkg:maven/junit/junit@4.13"
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+27
-12
@@ -8,6 +8,7 @@ type Depgraph = {
|
|||||||
graphName: string,
|
graphName: string,
|
||||||
artifacts: DepgraphArtifact[],
|
artifacts: DepgraphArtifact[],
|
||||||
dependencies: DepgraphDependency[],
|
dependencies: DepgraphDependency[],
|
||||||
|
isMultiModule: boolean,
|
||||||
}
|
}
|
||||||
|
|
||||||
type DepgraphArtifact = {
|
type DepgraphArtifact = {
|
||||||
@@ -39,9 +40,6 @@ export class MavenDependencyGraph {
|
|||||||
|
|
||||||
private directDependencies: Array<Package>;
|
private directDependencies: Array<Package>;
|
||||||
|
|
||||||
// //@ ts-ignore
|
|
||||||
// private rootPackage: DepgraphArtifact;
|
|
||||||
|
|
||||||
constructor(graph: Depgraph) {
|
constructor(graph: Depgraph) {
|
||||||
this.depGraph = graph;
|
this.depGraph = graph;
|
||||||
this.cache = new PackageCache();
|
this.cache = new PackageCache();
|
||||||
@@ -104,10 +102,9 @@ export class MavenDependencyGraph {
|
|||||||
const graph = this.depGraph;
|
const graph = this.depGraph;
|
||||||
const cache = this.cache;
|
const cache = this.cache;
|
||||||
|
|
||||||
const rootPackageArtifactId = graph.graphName;
|
const rootArtifactIds: string[] = [];
|
||||||
let rootPackageNumericId = 0;
|
|
||||||
|
|
||||||
const dependencyIdMap = dependencyMap(graph.dependencies);
|
const dependencyIdMap = dependencyMap(graph.dependencies);
|
||||||
|
const dependencyArtifactIdsWithParents = extractDependencyArtifactIdsWithParents(graph.dependencies);
|
||||||
const idToPackageCachePackage: Map<string, Package> = new Map<string, Package>();
|
const idToPackageCachePackage: Map<string, Package> = new Map<string, Package>();
|
||||||
|
|
||||||
// Create the packages for all known artifacts
|
// Create the packages for all known artifacts
|
||||||
@@ -119,8 +116,8 @@ export class MavenDependencyGraph {
|
|||||||
// Store a reference from the package URL to the original artifact as the artifact has extra metadata we need later for scopes and optionality
|
// Store a reference from the package URL to the original artifact as the artifact has extra metadata we need later for scopes and optionality
|
||||||
this.packageUrlToArtifact[artifactUrl.toString()] = artifact;
|
this.packageUrlToArtifact[artifactUrl.toString()] = artifact;
|
||||||
|
|
||||||
if (artifact.artifactId === rootPackageArtifactId) {
|
if (dependencyArtifactIdsWithParents.indexOf(artifact.id) === -1) {
|
||||||
rootPackageNumericId = artifact.numericId - 1;
|
rootArtifactIds.push(artifact.id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -145,15 +142,29 @@ export class MavenDependencyGraph {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.directDependencies = getDirectDependencies(rootPackageNumericId, graph.dependencies).map(id => { return idToPackageCachePackage[id] });
|
|
||||||
|
const uniqueRootArtifactDependencies: string[] = [];
|
||||||
|
rootArtifactIds.forEach(rootArtifactId => {
|
||||||
|
const dependencyIds = getDirectDependencies(rootArtifactId, graph.dependencies);
|
||||||
|
if (dependencyIds) {
|
||||||
|
dependencyIds.forEach(dependencyId => {
|
||||||
|
if (uniqueRootArtifactDependencies.indexOf(dependencyId) === -1) {
|
||||||
|
uniqueRootArtifactDependencies.push(dependencyId);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.directDependencies = uniqueRootArtifactDependencies.map(depId => idToPackageCachePackage[depId]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseDependencyJson(file: string): Depgraph {
|
export function parseDependencyJson(file: string, isMultiModule: boolean = false): Depgraph {
|
||||||
try {
|
try {
|
||||||
const data: Buffer = fs.readFileSync(file);
|
const data: Buffer = fs.readFileSync(file);
|
||||||
try {
|
try {
|
||||||
const depGraph: Depgraph = JSON.parse(data.toString('utf-8'));
|
const depGraph: Depgraph = JSON.parse(data.toString('utf-8'));
|
||||||
|
depGraph.isMultiModule = isMultiModule;
|
||||||
return depGraph;
|
return depGraph;
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
throw new Error(`Failed to parse JSON payload: ${err.message}`);
|
throw new Error(`Failed to parse JSON payload: ${err.message}`);
|
||||||
@@ -187,6 +198,10 @@ function getDependencyScopeForMavenScope(mavenScopes: string[] | undefined | nul
|
|||||||
return 'runtime';
|
return 'runtime';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extractDependencyArtifactIdsWithParents(dependencies: DepgraphDependency[]): string[] {
|
||||||
|
return dependencies.map(dependency => { return dependency.to; })
|
||||||
|
}
|
||||||
|
|
||||||
function dependencyMap(dependencies: DepgraphDependency[]): Map<string, string[] | undefined> {
|
function dependencyMap(dependencies: DepgraphDependency[]): Map<string, string[] | undefined> {
|
||||||
const map = new Map<string, string[]>();
|
const map = new Map<string, string[]>();
|
||||||
|
|
||||||
@@ -205,7 +220,7 @@ function dependencyMap(dependencies: DepgraphDependency[]): Map<string, string[]
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDirectDependencies(rootPackageNumericId: number, dependencies: DepgraphDependency[]): string[] {
|
function getDirectDependencies(artifactId: string, dependencies: DepgraphDependency[]): string[] {
|
||||||
const topLevel = dependencies.filter(dependency => { return dependency.numericFrom === rootPackageNumericId; });
|
const topLevel = dependencies.filter(dependency => { return dependency.from === artifactId; });
|
||||||
return topLevel.map(dep => { return dep.to; });
|
return topLevel.map(dep => { return dep.to; });
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import {generateDependencyGraph, generateSnapshot} from './snapshot-generator';
|
import { generateDependencyGraph, generateSnapshot } from './snapshot-generator';
|
||||||
|
|
||||||
describe('snapshot-generator', () => {
|
describe('snapshot-generator', () => {
|
||||||
|
|
||||||
@@ -25,6 +25,23 @@ describe('snapshot-generator', () => {
|
|||||||
expect(snapshot.manifests['bookstore-v3']).toBeDefined();
|
expect(snapshot.manifests['bookstore-v3']).toBeDefined();
|
||||||
expect(snapshot.detector.version).toBe(version);
|
expect(snapshot.detector.version).toBe(version);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should generate a snapshot for a multi-module project', async () => {
|
||||||
|
const projectDir = getMavenProjectDirectory('multi-module');
|
||||||
|
const snapshot = await generateSnapshot(projectDir);
|
||||||
|
|
||||||
|
expect(snapshot.manifests['bs-parent']).toBeDefined();
|
||||||
|
expect(snapshot.detector.version).toBe(version);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should generate a snapshot for a multi-module-multi-branch project', async () => {
|
||||||
|
const projectDir = getMavenProjectDirectory('multi-module-multi-branch');
|
||||||
|
const snapshot = await generateSnapshot(projectDir);
|
||||||
|
|
||||||
|
expect(snapshot.manifests['bs-parent']).toBeDefined();
|
||||||
|
expect(snapshot.detector.version).toBe(version);
|
||||||
|
expect(snapshot.manifests['bs-parent'].countDependencies()).toBe(20);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,15 @@ import * as exec from '@actions/exec';
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
|
||||||
import { Snapshot } from '@github/dependency-submission-toolkit';
|
import { Snapshot } from '@github/dependency-submission-toolkit';
|
||||||
import { MavenDependencyGraph, parseDependencyJson } from './depgraph';
|
import { MavenDependencyGraph, parseDependencyJson } from './depgraph';
|
||||||
|
|
||||||
const version = require('../package.json')['version'];
|
const version = require('../package.json')['version'];
|
||||||
|
|
||||||
|
const DEPGRAPH_MAVEN_PLUGIN_VERSION = '4.0.2';
|
||||||
|
|
||||||
export async function generateSnapshot(directory: string, context?: any, job?: any) {
|
export async function generateSnapshot(directory: string, context?: any, job?: any) {
|
||||||
const depgraph = await generateDependencyGraph(directory);
|
const depgraph = await generateDependencyGraph(directory);
|
||||||
|
|
||||||
@@ -49,13 +52,25 @@ export async function generateDependencyGraph(directory: string) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const mavenArguments = [
|
core.startGroup('depgraph-maven-plugin:reactor');
|
||||||
'com.github.ferstl:depgraph-maven-plugin:4.0.1:graph',
|
const mavenReactorArguments = [
|
||||||
|
`com.github.ferstl:depgraph-maven-plugin:${DEPGRAPH_MAVEN_PLUGIN_VERSION}:reactor`,
|
||||||
'-DgraphFormat=json',
|
'-DgraphFormat=json',
|
||||||
|
'-DoutputFileName=reactor.json'
|
||||||
];
|
];
|
||||||
|
await exec.exec('mvn', mavenReactorArguments, options);
|
||||||
|
|
||||||
core.startGroup('depgraph-maven-plugin');
|
core.info(executionOutput);
|
||||||
await exec.exec('mvn', mavenArguments, options);
|
core.info(errors);
|
||||||
|
core.endGroup();
|
||||||
|
|
||||||
|
core.startGroup('depgraph-maven-plugin:aggregate');
|
||||||
|
const mavenAggregateArguments = [
|
||||||
|
`com.github.ferstl:depgraph-maven-plugin:${DEPGRAPH_MAVEN_PLUGIN_VERSION}:aggregate`,
|
||||||
|
'-DgraphFormat=json',
|
||||||
|
'-DoutputFileName=aggregate-depgraph.json'
|
||||||
|
];
|
||||||
|
await exec.exec('mvn', mavenAggregateArguments, options);
|
||||||
|
|
||||||
core.info(executionOutput);
|
core.info(executionOutput);
|
||||||
core.info(errors);
|
core.info(errors);
|
||||||
@@ -65,14 +80,30 @@ export async function generateDependencyGraph(directory: string) {
|
|||||||
throw new Error(`A problem was encountered generating dependency files, please check execution logs for details; ${err.message}`);
|
throw new Error(`A problem was encountered generating dependency files, please check execution logs for details; ${err.message}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO need to account for multi module projects
|
const targetPath = path.join(directory, 'target');
|
||||||
|
const isMultiModule = checkForMultiModule(path.join(targetPath, 'reactor.json'));
|
||||||
|
|
||||||
// Now we have the target/dependency-graph.json file to process
|
// Now we have the aggregate dependency graph file to process
|
||||||
const file = path.join(directory, 'target', 'dependency-graph.json');
|
const file = path.join(targetPath, 'aggregate-depgraph.json');
|
||||||
try {
|
try {
|
||||||
return parseDependencyJson(file);
|
return parseDependencyJson(file, isMultiModule);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
core.error(err);
|
core.error(err);
|
||||||
throw new Error(`Could not parse maven dependency file, '${file}': ${err.message}`);
|
throw new Error(`Could not parse maven dependency file, '${file}': ${err.message}`);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkForMultiModule(reactorJsonFile) {
|
||||||
|
try {
|
||||||
|
const data: Buffer = fs.readFileSync(reactorJsonFile);
|
||||||
|
try {
|
||||||
|
const reactor = JSON.parse(data.toString('utf-8'));
|
||||||
|
// The reactor file will have an array of artifacts making up the parent and child modules if it is a multi module project
|
||||||
|
return reactor.artifacts && reactor.artifacts.length > 0;
|
||||||
|
} catch (err: any) {
|
||||||
|
throw new Error(`Failed to parse reactor JSON payload: ${err.message}`);
|
||||||
|
}
|
||||||
|
} catch (err: any) {
|
||||||
|
throw new Error(`Failed to load file ${reactorJsonFile}: ${err}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"graphName" : "bookstore-v3",
|
"graphName" : "bookstore-v3",
|
||||||
"artifacts" : [ {
|
"artifacts" : [ {
|
||||||
"id" : "org.eclipse.jetty:jetty-server:jar",
|
"id" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"numericId" : 1,
|
"numericId" : 1,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-server",
|
"artifactId" : "jetty-server",
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty.toolchain:jetty-servlet-api:jar",
|
"id" : "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:compile",
|
||||||
"numericId" : 2,
|
"numericId" : 2,
|
||||||
"groupId" : "org.eclipse.jetty.toolchain",
|
"groupId" : "org.eclipse.jetty.toolchain",
|
||||||
"artifactId" : "jetty-servlet-api",
|
"artifactId" : "jetty-servlet-api",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty:jetty-http:jar",
|
"id" : "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
"numericId" : 3,
|
"numericId" : 3,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-http",
|
"artifactId" : "jetty-http",
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty:jetty-util:jar",
|
"id" : "org.eclipse.jetty:jetty-util:jar:compile",
|
||||||
"numericId" : 4,
|
"numericId" : 4,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-util",
|
"artifactId" : "jetty-util",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty:jetty-io:jar",
|
"id" : "org.eclipse.jetty:jetty-io:jar:compile",
|
||||||
"numericId" : 5,
|
"numericId" : 5,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-io",
|
"artifactId" : "jetty-io",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.slf4j:slf4j-api:jar",
|
"id" : "org.slf4j:slf4j-api:jar:compile",
|
||||||
"numericId" : 6,
|
"numericId" : 6,
|
||||||
"groupId" : "org.slf4j",
|
"groupId" : "org.slf4j",
|
||||||
"artifactId" : "slf4j-api",
|
"artifactId" : "slf4j-api",
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "com.github.octodemo:bookstore-v3:jar",
|
"id" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"numericId" : 7,
|
"numericId" : 7,
|
||||||
"groupId" : "com.github.octodemo",
|
"groupId" : "com.github.octodemo",
|
||||||
"artifactId" : "bookstore-v3",
|
"artifactId" : "bookstore-v3",
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty:jetty-servlet:jar",
|
"id" : "org.eclipse.jetty:jetty-servlet:jar:compile",
|
||||||
"numericId" : 8,
|
"numericId" : 8,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-servlet",
|
"artifactId" : "jetty-servlet",
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.eclipse.jetty:jetty-security:jar",
|
"id" : "org.eclipse.jetty:jetty-security:jar:compile",
|
||||||
"numericId" : 9,
|
"numericId" : 9,
|
||||||
"groupId" : "org.eclipse.jetty",
|
"groupId" : "org.eclipse.jetty",
|
||||||
"artifactId" : "jetty-security",
|
"artifactId" : "jetty-security",
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "ognl:ognl:jar",
|
"id" : "ognl:ognl:jar:compile",
|
||||||
"numericId" : 10,
|
"numericId" : 10,
|
||||||
"groupId" : "ognl",
|
"groupId" : "ognl",
|
||||||
"artifactId" : "ognl",
|
"artifactId" : "ognl",
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.javassist:javassist:jar",
|
"id" : "org.javassist:javassist:jar:compile",
|
||||||
"numericId" : 11,
|
"numericId" : 11,
|
||||||
"groupId" : "org.javassist",
|
"groupId" : "org.javassist",
|
||||||
"artifactId" : "javassist",
|
"artifactId" : "javassist",
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.thymeleaf:thymeleaf:jar",
|
"id" : "org.thymeleaf:thymeleaf:jar:compile",
|
||||||
"numericId" : 12,
|
"numericId" : 12,
|
||||||
"groupId" : "org.thymeleaf",
|
"groupId" : "org.thymeleaf",
|
||||||
"artifactId" : "thymeleaf",
|
"artifactId" : "thymeleaf",
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.attoparser:attoparser:jar",
|
"id" : "org.attoparser:attoparser:jar:compile",
|
||||||
"numericId" : 13,
|
"numericId" : 13,
|
||||||
"groupId" : "org.attoparser",
|
"groupId" : "org.attoparser",
|
||||||
"artifactId" : "attoparser",
|
"artifactId" : "attoparser",
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.unbescape:unbescape:jar",
|
"id" : "org.unbescape:unbescape:jar:compile",
|
||||||
"numericId" : 14,
|
"numericId" : 14,
|
||||||
"groupId" : "org.unbescape",
|
"groupId" : "org.unbescape",
|
||||||
"artifactId" : "unbescape",
|
"artifactId" : "unbescape",
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.json:json:jar",
|
"id" : "org.json:json:jar:compile",
|
||||||
"numericId" : 15,
|
"numericId" : 15,
|
||||||
"groupId" : "org.json",
|
"groupId" : "org.json",
|
||||||
"artifactId" : "json",
|
"artifactId" : "json",
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.xerial:sqlite-jdbc:jar",
|
"id" : "org.xerial:sqlite-jdbc:jar:compile",
|
||||||
"numericId" : 16,
|
"numericId" : 16,
|
||||||
"groupId" : "org.xerial",
|
"groupId" : "org.xerial",
|
||||||
"artifactId" : "sqlite-jdbc",
|
"artifactId" : "sqlite-jdbc",
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar",
|
"id" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar:compile",
|
||||||
"numericId" : 17,
|
"numericId" : 17,
|
||||||
"groupId" : "org.apache.logging.log4j",
|
"groupId" : "org.apache.logging.log4j",
|
||||||
"artifactId" : "log4j-slf4j18-impl",
|
"artifactId" : "log4j-slf4j18-impl",
|
||||||
@@ -154,7 +154,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.apache.logging.log4j:log4j-api:jar",
|
"id" : "org.apache.logging.log4j:log4j-api:jar:compile",
|
||||||
"numericId" : 18,
|
"numericId" : 18,
|
||||||
"groupId" : "org.apache.logging.log4j",
|
"groupId" : "org.apache.logging.log4j",
|
||||||
"artifactId" : "log4j-api",
|
"artifactId" : "log4j-api",
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
"scopes" : [ "compile" ],
|
"scopes" : [ "compile" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.apache.logging.log4j:log4j-core:jar",
|
"id" : "org.apache.logging.log4j:log4j-core:jar:runtime",
|
||||||
"numericId" : 19,
|
"numericId" : 19,
|
||||||
"groupId" : "org.apache.logging.log4j",
|
"groupId" : "org.apache.logging.log4j",
|
||||||
"artifactId" : "log4j-core",
|
"artifactId" : "log4j-core",
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
"scopes" : [ "runtime" ],
|
"scopes" : [ "runtime" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "junit:junit:jar",
|
"id" : "junit:junit:jar:test",
|
||||||
"numericId" : 20,
|
"numericId" : 20,
|
||||||
"groupId" : "junit",
|
"groupId" : "junit",
|
||||||
"artifactId" : "junit",
|
"artifactId" : "junit",
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
"scopes" : [ "test" ],
|
"scopes" : [ "test" ],
|
||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
}, {
|
}, {
|
||||||
"id" : "org.hamcrest:hamcrest-core:jar",
|
"id" : "org.hamcrest:hamcrest-core:jar:test",
|
||||||
"numericId" : 21,
|
"numericId" : 21,
|
||||||
"groupId" : "org.hamcrest",
|
"groupId" : "org.hamcrest",
|
||||||
"artifactId" : "hamcrest-core",
|
"artifactId" : "hamcrest-core",
|
||||||
@@ -191,122 +191,122 @@
|
|||||||
"types" : [ "jar" ]
|
"types" : [ "jar" ]
|
||||||
} ],
|
} ],
|
||||||
"dependencies" : [ {
|
"dependencies" : [ {
|
||||||
"from" : "org.eclipse.jetty:jetty-server:jar",
|
"from" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"to" : "org.eclipse.jetty.toolchain:jetty-servlet-api:jar",
|
"to" : "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:compile",
|
||||||
"numericFrom" : 0,
|
"numericFrom" : 0,
|
||||||
"numericTo" : 1,
|
"numericTo" : 1,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.eclipse.jetty:jetty-http:jar",
|
"from" : "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-util:jar",
|
"to" : "org.eclipse.jetty:jetty-util:jar:compile",
|
||||||
"numericFrom" : 2,
|
"numericFrom" : 2,
|
||||||
"numericTo" : 3,
|
"numericTo" : 3,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.eclipse.jetty:jetty-server:jar",
|
"from" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-http:jar",
|
"to" : "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
"numericFrom" : 0,
|
"numericFrom" : 0,
|
||||||
"numericTo" : 2,
|
"numericTo" : 2,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.eclipse.jetty:jetty-server:jar",
|
"from" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-io:jar",
|
"to" : "org.eclipse.jetty:jetty-io:jar:compile",
|
||||||
"numericFrom" : 0,
|
"numericFrom" : 0,
|
||||||
"numericTo" : 4,
|
"numericTo" : 4,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.eclipse.jetty:jetty-server:jar",
|
"from" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"to" : "org.slf4j:slf4j-api:jar",
|
"to" : "org.slf4j:slf4j-api:jar:compile",
|
||||||
"numericFrom" : 0,
|
"numericFrom" : 0,
|
||||||
"numericTo" : 5,
|
"numericTo" : 5,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-server:jar",
|
"to" : "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 0,
|
"numericTo" : 0,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.eclipse.jetty:jetty-servlet:jar",
|
"from" : "org.eclipse.jetty:jetty-servlet:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-security:jar",
|
"to" : "org.eclipse.jetty:jetty-security:jar:compile",
|
||||||
"numericFrom" : 7,
|
"numericFrom" : 7,
|
||||||
"numericTo" : 8,
|
"numericTo" : 8,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.eclipse.jetty:jetty-servlet:jar",
|
"to" : "org.eclipse.jetty:jetty-servlet:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 7,
|
"numericTo" : 7,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "ognl:ognl:jar",
|
"from" : "ognl:ognl:jar:compile",
|
||||||
"to" : "org.javassist:javassist:jar",
|
"to" : "org.javassist:javassist:jar:compile",
|
||||||
"numericFrom" : 9,
|
"numericFrom" : 9,
|
||||||
"numericTo" : 10,
|
"numericTo" : 10,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.thymeleaf:thymeleaf:jar",
|
"from" : "org.thymeleaf:thymeleaf:jar:compile",
|
||||||
"to" : "ognl:ognl:jar",
|
"to" : "ognl:ognl:jar:compile",
|
||||||
"numericFrom" : 11,
|
"numericFrom" : 11,
|
||||||
"numericTo" : 9,
|
"numericTo" : 9,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.thymeleaf:thymeleaf:jar",
|
"from" : "org.thymeleaf:thymeleaf:jar:compile",
|
||||||
"to" : "org.attoparser:attoparser:jar",
|
"to" : "org.attoparser:attoparser:jar:compile",
|
||||||
"numericFrom" : 11,
|
"numericFrom" : 11,
|
||||||
"numericTo" : 12,
|
"numericTo" : 12,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.thymeleaf:thymeleaf:jar",
|
"from" : "org.thymeleaf:thymeleaf:jar:compile",
|
||||||
"to" : "org.unbescape:unbescape:jar",
|
"to" : "org.unbescape:unbescape:jar:compile",
|
||||||
"numericFrom" : 11,
|
"numericFrom" : 11,
|
||||||
"numericTo" : 13,
|
"numericTo" : 13,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.thymeleaf:thymeleaf:jar",
|
"to" : "org.thymeleaf:thymeleaf:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 11,
|
"numericTo" : 11,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.json:json:jar",
|
"to" : "org.json:json:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 14,
|
"numericTo" : 14,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.xerial:sqlite-jdbc:jar",
|
"to" : "org.xerial:sqlite-jdbc:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 15,
|
"numericTo" : 15,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar",
|
"from" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar:compile",
|
||||||
"to" : "org.apache.logging.log4j:log4j-api:jar",
|
"to" : "org.apache.logging.log4j:log4j-api:jar:compile",
|
||||||
"numericFrom" : 16,
|
"numericFrom" : 16,
|
||||||
"numericTo" : 17,
|
"numericTo" : 17,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar",
|
"from" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar:compile",
|
||||||
"to" : "org.apache.logging.log4j:log4j-core:jar",
|
"to" : "org.apache.logging.log4j:log4j-core:jar:runtime",
|
||||||
"numericFrom" : 16,
|
"numericFrom" : 16,
|
||||||
"numericTo" : 18,
|
"numericTo" : 18,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar",
|
"to" : "org.apache.logging.log4j:log4j-slf4j18-impl:jar:compile",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 16,
|
"numericTo" : 16,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "junit:junit:jar",
|
"from" : "junit:junit:jar:test",
|
||||||
"to" : "org.hamcrest:hamcrest-core:jar",
|
"to" : "org.hamcrest:hamcrest-core:jar:test",
|
||||||
"numericFrom" : 19,
|
"numericFrom" : 19,
|
||||||
"numericTo" : 20,
|
"numericTo" : 20,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
}, {
|
}, {
|
||||||
"from" : "com.github.octodemo:bookstore-v3:jar",
|
"from" : "com.github.octodemo:bookstore-v3:jar:compile",
|
||||||
"to" : "junit:junit:jar",
|
"to" : "junit:junit:jar:test",
|
||||||
"numericFrom" : 6,
|
"numericFrom" : 6,
|
||||||
"numericTo" : 19,
|
"numericTo" : 19,
|
||||||
"resolution" : "INCLUDED"
|
"resolution" : "INCLUDED"
|
||||||
|
|||||||
@@ -0,0 +1,427 @@
|
|||||||
|
{
|
||||||
|
"graphName": "bs-parent",
|
||||||
|
"artifacts": [
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
|
"numericId": 1,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-http",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-util:jar:compile",
|
||||||
|
"numericId": 2,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-util",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-client:jar:compile",
|
||||||
|
"numericId": 3,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-client",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-io:jar:compile",
|
||||||
|
"numericId": 4,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-io",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-alpn-client:jar:compile",
|
||||||
|
"numericId": 5,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-alpn-client",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"numericId": 6,
|
||||||
|
"groupId": "org.eclipse.jetty.http2",
|
||||||
|
"artifactId": "http2-http-client-transport",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty.http2:http2-common:jar:compile",
|
||||||
|
"numericId": 7,
|
||||||
|
"groupId": "org.eclipse.jetty.http2",
|
||||||
|
"artifactId": "http2-common",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty.http2:http2-hpack:jar:compile",
|
||||||
|
"numericId": 8,
|
||||||
|
"groupId": "org.eclipse.jetty.http2",
|
||||||
|
"artifactId": "http2-hpack",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty.http2:http2-client:jar:compile",
|
||||||
|
"numericId": 9,
|
||||||
|
"groupId": "org.eclipse.jetty.http2",
|
||||||
|
"artifactId": "http2-client",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-alpn-java-client:jar:compile",
|
||||||
|
"numericId": 10,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-alpn-java-client",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.slf4j:slf4j-api:jar:compile",
|
||||||
|
"numericId": 11,
|
||||||
|
"groupId": "org.slf4j",
|
||||||
|
"artifactId": "slf4j-api",
|
||||||
|
"version": "2.0.0-alpha6",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "com.github.octodemo:bs-library:jar:compile",
|
||||||
|
"numericId": 12,
|
||||||
|
"groupId": "com.github.octodemo",
|
||||||
|
"artifactId": "bs-library",
|
||||||
|
"version": "1.0.0-SNAPSHOT",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.apache.logging.log4j:log4j-api:jar:compile",
|
||||||
|
"numericId": 13,
|
||||||
|
"groupId": "org.apache.logging.log4j",
|
||||||
|
"artifactId": "log4j-api",
|
||||||
|
"version": "2.19.0",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "junit:junit:jar:test",
|
||||||
|
"numericId": 14,
|
||||||
|
"groupId": "junit",
|
||||||
|
"artifactId": "junit",
|
||||||
|
"version": "4.13",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"test"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.hamcrest:hamcrest-core:jar:test",
|
||||||
|
"numericId": 15,
|
||||||
|
"groupId": "org.hamcrest",
|
||||||
|
"artifactId": "hamcrest-core",
|
||||||
|
"version": "1.3",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"test"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"numericId": 16,
|
||||||
|
"groupId": "org.eclipse.jetty",
|
||||||
|
"artifactId": "jetty-server",
|
||||||
|
"version": "10.0.10",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:compile",
|
||||||
|
"numericId": 17,
|
||||||
|
"groupId": "org.eclipse.jetty.toolchain",
|
||||||
|
"artifactId": "jetty-servlet-api",
|
||||||
|
"version": "4.0.6",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "com.github.octodemo:bs-application:jar:compile",
|
||||||
|
"numericId": 18,
|
||||||
|
"groupId": "com.github.octodemo",
|
||||||
|
"artifactId": "bs-application",
|
||||||
|
"version": "1.0.0-SNAPSHOT",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "com.github.octodemo:bs-other:jar:compile",
|
||||||
|
"numericId": 19,
|
||||||
|
"groupId": "com.github.octodemo",
|
||||||
|
"artifactId": "bs-other",
|
||||||
|
"version": "1.0.0-SNAPSHOT",
|
||||||
|
"optional": false,
|
||||||
|
"scopes": [
|
||||||
|
"compile"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"jar"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-util:jar:compile",
|
||||||
|
"numericFrom": 0,
|
||||||
|
"numericTo": 1,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-client:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
|
"numericFrom": 2,
|
||||||
|
"numericTo": 0,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-client:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-io:jar:compile",
|
||||||
|
"numericFrom": 2,
|
||||||
|
"numericTo": 3,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-client:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-alpn-client:jar:compile",
|
||||||
|
"numericFrom": 2,
|
||||||
|
"numericTo": 4,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-client:jar:compile",
|
||||||
|
"numericFrom": 5,
|
||||||
|
"numericTo": 2,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-common:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty.http2:http2-hpack:jar:compile",
|
||||||
|
"numericFrom": 6,
|
||||||
|
"numericTo": 7,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-client:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty.http2:http2-common:jar:compile",
|
||||||
|
"numericFrom": 8,
|
||||||
|
"numericTo": 6,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty.http2:http2-client:jar:compile",
|
||||||
|
"numericFrom": 5,
|
||||||
|
"numericTo": 8,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-alpn-java-client:jar:compile",
|
||||||
|
"numericFrom": 5,
|
||||||
|
"numericTo": 9,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"to": "org.slf4j:slf4j-api:jar:compile",
|
||||||
|
"numericFrom": 5,
|
||||||
|
"numericTo": 10,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-library:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty.http2:http2-http-client-transport:jar:compile",
|
||||||
|
"numericFrom": 11,
|
||||||
|
"numericTo": 5,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-library:jar:compile",
|
||||||
|
"to": "org.apache.logging.log4j:log4j-api:jar:compile",
|
||||||
|
"numericFrom": 11,
|
||||||
|
"numericTo": 12,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "junit:junit:jar:test",
|
||||||
|
"to": "org.hamcrest:hamcrest-core:jar:test",
|
||||||
|
"numericFrom": 13,
|
||||||
|
"numericTo": 14,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-library:jar:compile",
|
||||||
|
"to": "junit:junit:jar:test",
|
||||||
|
"numericFrom": 11,
|
||||||
|
"numericTo": 13,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:compile",
|
||||||
|
"numericFrom": 15,
|
||||||
|
"numericTo": 16,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-http:jar:compile",
|
||||||
|
"numericFrom": 15,
|
||||||
|
"numericTo": 0,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-io:jar:compile",
|
||||||
|
"numericFrom": 15,
|
||||||
|
"numericTo": 3,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"to": "org.slf4j:slf4j-api:jar:compile",
|
||||||
|
"numericFrom": 15,
|
||||||
|
"numericTo": 10,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-application:jar:compile",
|
||||||
|
"to": "org.eclipse.jetty:jetty-server:jar:compile",
|
||||||
|
"numericFrom": 17,
|
||||||
|
"numericTo": 15,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-application:jar:compile",
|
||||||
|
"to": "com.github.octodemo:bs-library:jar:compile",
|
||||||
|
"numericFrom": 17,
|
||||||
|
"numericTo": 11,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-application:jar:compile",
|
||||||
|
"to": "junit:junit:jar:test",
|
||||||
|
"numericFrom": 17,
|
||||||
|
"numericTo": 13,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "com.github.octodemo:bs-other:jar:compile",
|
||||||
|
"to": "junit:junit:jar:test",
|
||||||
|
"numericFrom": 18,
|
||||||
|
"numericTo": 13,
|
||||||
|
"resolution": "INCLUDED"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-application</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
|
<artifactId>jetty-server</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-libraries</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-library-database</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.xerial</groupId>
|
||||||
|
<artifactId>sqlite-jdbc</artifactId>
|
||||||
|
<version>3.36.0.3</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-libraries</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-library-web</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty.http2</groupId>
|
||||||
|
<artifactId>http2-http-client-transport</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-libraries</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>bs-library-web</module>
|
||||||
|
<module>bs-library-database</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<!-- Control some versions of dependencies here, overriding the parent -->
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<version>42.5.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- All child libraries should use these dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-api</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-other</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<description>A Java example project to demonstrate a Java development stack with Maven, GitHub Actions, GitHub Package Registry and Azure.</description>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>bs-libraries</module>
|
||||||
|
<module>bs-application</module>
|
||||||
|
<module>bs-other</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
|
||||||
|
<java.version>11</java.version>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Dependency Versions
|
||||||
|
-->
|
||||||
|
<jetty.version>10.0.10</jetty.version>
|
||||||
|
<log4j.version>2.19.0</log4j.version>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Properties used to create a CD style version number for the Maven build
|
||||||
|
-->
|
||||||
|
<revision>1.0.0</revision>
|
||||||
|
<changelist></changelist>
|
||||||
|
<sha1>-SNAPSHOT</sha1>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
|
<artifactId>jetty-bom</artifactId>
|
||||||
|
<version>${jetty.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library-web</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library-logging</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-bom</artifactId>
|
||||||
|
<version>${log4j.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- This is overwritten in the bs-libraries versions -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.postgresql</groupId>
|
||||||
|
<artifactId>postgresql</artifactId>
|
||||||
|
<version>42.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.13</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<!-- To enable debug compilation use the maven.compiler.debug user property -->
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.github.ekryd.echo-maven-plugin</groupId>
|
||||||
|
<artifactId>echo-maven-plugin</artifactId>
|
||||||
|
<version>1.3.2</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jacoco</groupId>
|
||||||
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
|
<version>0.8.6</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.2.4</version>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
@@ -1,21 +1,24 @@
|
|||||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<parent>com.github.octodemo:bs-parent:>${revision}${changelist}${sha1}</parent>
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
<artifactId>bs-parent</artifactId>
|
<artifactId>bs-application</artifactId>
|
||||||
<version</version>
|
<packaging>jar</packaging>
|
||||||
<packaging>pom</packaging>
|
|
||||||
|
|
||||||
<modules>
|
|
||||||
<module>bs-library</module>
|
|
||||||
<module>bs-application</module>
|
|
||||||
</modules>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.jetty</groupId>
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
<artifactId>jetty-server</artifactId>
|
<artifactId>jetty-server</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-library</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.jetty.http2</groupId>
|
||||||
|
<artifactId>http2-http-client-transport</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-api</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.github.octodemo</groupId>
|
||||||
|
<artifactId>bs-parent</artifactId>
|
||||||
|
<version>${revision}${changelist}${sha1}</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>bs-other</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
</project>
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
<modules>
|
<modules>
|
||||||
<module>bs-library</module>
|
<module>bs-library</module>
|
||||||
<module>bs-application</module>
|
<module>bs-application</module>
|
||||||
|
<module>bs-other</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@@ -22,8 +23,8 @@
|
|||||||
<!--
|
<!--
|
||||||
Dependency Versions
|
Dependency Versions
|
||||||
-->
|
-->
|
||||||
<jetty.version>10.0.0</jetty.version>
|
<jetty.version>10.0.10</jetty.version>
|
||||||
<log4j.version>2.17.2</log4j.version>
|
<log4j.version>2.19.0</log4j.version>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Properties used to create a CD style version number for the Maven build
|
Properties used to create a CD style version number for the Maven build
|
||||||
@@ -42,20 +43,24 @@
|
|||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>bs-library</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-bom</artifactId>
|
||||||
|
<version>${log4j.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.eclipse.jetty</groupId>
|
|
||||||
<artifactId>jetty-server</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.eclipse.jetty</groupId>
|
|
||||||
<artifactId>jetty-servlet</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
|
|||||||
Reference in New Issue
Block a user