{"id":20023104,"url":"https://github.com/mebigfatguy/yank","last_synced_at":"2025-03-02T04:15:10.792Z","repository":{"id":6263759,"uuid":"7496819","full_name":"mebigfatguy/yank","owner":"mebigfatguy","description":"a non transitive maven artifact fetcher for corporate environments","archived":false,"fork":false,"pushed_at":"2024-11-18T00:15:48.000Z","size":356,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-12T16:37:44.287Z","etag":null,"topics":["3rdparty","artifacts","java"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mebigfatguy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-01-08T06:31:18.000Z","updated_at":"2024-11-19T01:24:35.000Z","dependencies_parsed_at":"2024-11-13T08:44:22.204Z","dependency_job_id":"c1df3c32-c1a2-4c9c-8e95-a1fb3766cdeb","html_url":"https://github.com/mebigfatguy/yank","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mebigfatguy%2Fyank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mebigfatguy%2Fyank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mebigfatguy%2Fyank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mebigfatguy%2Fyank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mebigfatguy","download_url":"https://codeload.github.com/mebigfatguy/yank/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241455452,"owners_count":19965611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3rdparty","artifacts","java"],"created_at":"2024-11-13T08:44:19.747Z","updated_at":"2025-03-02T04:15:10.726Z","avatar_url":"https://github.com/mebigfatguy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"yank\n====\n\na non transitive maven artifact fetcher for corporate environments.\n\n# Maven Coordinates #\ngroupId: com.mebigfatguy.yank\nartifactId: yank\nversion: 2.0.3\n\n\nyank is an ant task that can retrieve maven artifacts from public and private servers, similar to maven and ivy.\n\nHowever yank is meant for corporate environments where governance rules are more strict than transitive \ndependency managers allow. yank only pulls down what you ask for, and the the files to be pulled are documented\nin a spread sheet (xls, xlsx, ods, csv or txt files) for easy use of corporate approvals, etc.\n\nYou can add this task, as\n\u003cpre\u003e\n\u0026lt;yank yankFile=\"${lib.dir}/yank.xls\" destination=\"${lib.dir}\"\u0026gt;\n        \u0026lt;server url=\"https://repo1.maven.org/maven2\"/\u0026gt;\n\u0026lt;/yank\u0026gt;\n\u003c/pre\u003e\n\nand it will pull new artifacts as needed. You can list as many servers as desired each in its own element.\n\nThere are a few optional attributes to the yank task that you can add as follows\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003cth\u003eProperty\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n      \u003cth\u003eValue\u003c/th\u003e\n      \u003cth\u003eDefault\u003c/th\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003efailOnError\u003c/td\u003e\n      \u003ctd\u003efails the build if an artifact fails to download\u003c/td\u003e\n      \u003ctd\u003e(true/false)\u003c/td\u003e\n      \u003ctd\u003etrue\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003eproxyServer\u003c/td\u003e\n      \u003ctd\u003ethe url of the proxy server to use\u003c/td\u003e\n      \u003ctd\u003e(String)\u003c/td\u003e\n      \u003ctd\u003eblank\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003ereportMissingDependencies\u003c/td\u003e\n      \u003ctd\u003elogs transitive dependencies based on the poms\u003c/td\u003e\n      \u003ctd\u003e(true/false)\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n   \u003c/tr\u003e  \n   \u003ctr\u003e\n      \u003ctd\u003efindUpdatesFile\u003c/td\u003e\n      \u003ctd\u003egenerate a file with jars that have updated versions not being used\u003c/td\u003e\n      \u003ctd\u003e(file)\u003c/td\u003e\n      \u003ctd\u003enull\u003c/td\u003e  \n   \u003ctr\u003e\n      \u003ctd\u003esource\u003c/td\u003e\n      \u003ctd\u003edownload source artifacts as well\u003c/td\u003e\n      \u003ctd\u003e(true/false)\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n   \u003c/tr\u003e    \n   \u003ctr\u003e\n      \u003ctd\u003estripVersions\u003c/td\u003e\n      \u003ctd\u003esave the jar files without version numbers\u003c/td\u003e\n      \u003ctd\u003e(true/false)\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003eseparateClassifierTypes\u003c/td\u003e\n      \u003ctd\u003esaves sources, javadocs, and other 'classifier' type artifacts in sub directories\u003c/td\u003e\n      \u003ctd\u003e{true/false}\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n   \u003c/tr\u003e  \n   \u003ctr\u003e\n      \u003ctd\u003egenerateLicenses\u003c/td\u003e\n      \u003ctd\u003epulls all licenses files it can find from pom files\u003c/td\u003e\n      \u003ctd\u003e{true/false}\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n   \u003c/tr\u003e  \n   \u003ctr\u003e\n      \u003ctd\u003ethreadPoolSize\u003c/td\u003e\n      \u003ctd\u003enumber of concurrent download threads\u003c/td\u003e\n      \u003ctd\u003e(integer)\u003c/td\u003e\n      \u003ctd\u003e4 * numProcessors\u003c/td\u003e\n   \u003c/tr\u003e\n   \u003ctr\u003e\n      \u003ctd\u003echeckSHADigests\u003c/td\u003e\n      \u003ctd\u003ecompare provided SHA-1 digest against calculated digest\u003c/td\u003e\n      \u003ctd\u003e(true/false)\u003c/td\u003e\n      \u003ctd\u003efalse\u003c/td\u003e\n\u003c/table\u003e\n\nIn addition, you can add a sub element to generate an ant path element, such as\n\u003cpre\u003e\n\u0026lt;generatePath pathXmlFile=\"${sample.dir}/yank_build.xml\" classpathName=\"yank.path\" /\u0026gt;\n\u003c/pre\u003e\n\nThis will dynamically populate a classpath element in your project with reference 'yank.path' that can be used in \u003cjava\u003e tasks etc.\nThe pathXMLFile attribute is optional, but if specified, will also produce an ant xml project file located at \npathXmlFile (${sample.dir}/yank_build.xml) like\n\u003cpre\u003e\n\u0026lt;path name=\"yank.path\"\u0026gt;\n    \u0026lt;pathelement location=\"${lib.dir}/asm.jar\" /\u0026gt;\n\u0026lt;/path\u0026gt;\n\u003c/pre\u003e\n    \nWith path elements for each jar specified.\n\nYou can also add a sub element to generate a properties file containing constants for all the jar version numbers, such as\n\u003cpre\u003e\n\u0026lt;generateVersions propertyFileName=\"${basedir}/version.properties\" /\u0026gt;\n\u003c/pre\u003e\n\nAs for the yank.xls file, the spreadsheet is just a normal spread sheet of your own design, so long as there are GroupId, \nArtifactId and Version columns. You may also specify a Classifier column, which can download jars with names after the version \nsuch as natives. Note that sources jars are automatically handled and you need not use the classifier column for this purpose \n(See the source attribute above). You may also specify a Type column to support files such as xml, or zip files, if not specified, 'jar' \nis assumed. A Digest column may be added that if populated with SHA-1 digest of the jar, and the checkSHADigests attribute is set, yank\nwill validate that the downloaded jar has the expected digest, and if not fails the build. More columns may be added for your governance purposes, \nsuch as license, reason, code area, etc, without issue. \nIf values for columns groupId or version are not filled in, the previous value is pulled down from above. Other columns must be\nexplicitly specified.\n\n* Spread sheets can be defined using *.xls, *.xlsx, *.ods, csv or txt (tab delimited) formats\n\nHere's an example yank.xls file\n\n\u003ctable\u003e\n    \u003ctr\u003e\u003cth\u003eGroupId\u003c/th\u003e\u003cth\u003eArtifactId\u003c/th\u003e\u003cth\u003eVersion\u003c/th\u003e\u003cth\u003eClassifier\u003c/th\u003e\u003cth\u003eDigest\u003c/th\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003eorg.ow2.asm\u003c/td\u003e\u003ctd\u003easm\u003c/td\u003e\u003ctd\u003e4.1\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003ead568238ee36a820bd6c6806807e8a14ea34684d\u003c/td\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003eorg.slf4j\u003c/td\u003e\u003ctd\u003eslf4j-api\u003c/td\u003e\u003ctd\u003e1.7.5\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e6b262da268f8ad9eff941b25503a9198f0a0ac93\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003ech.qos.logback\u003c/td\u003e\u003ctd\u003elogback-core\u003c/td\u003e\u003ctd\u003e1.0.12\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e2d23694879c2c12f125dac5076bdfd5d771cc4cb\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003elogback-classic\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e030748760198d5071e139fa3d48cd1e57031fed6\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e    \n    \u003ctr\u003e\u003ctd\u003eorg.jogamp.jogl\u003c/td\u003e\u003ctd\u003ejogl-all\u003c/td\u003e\u003ctd\u003e2.0.2\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003ejogl-all\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003enatives-linux-amd64\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003ejogl-all\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003enatives-macosx-universal\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\n    \u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003ejogl-all\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003enatives-windows-amd64\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e                     \n\u003c/table\u003e\n\nBelow is a simplistic example of a build.xml file that uses yank to manage dependencies\n\u003cpre\u003e\n\u0026lt;project name=\"ty\" default=\"jar\" xmlns:yank=\"antlib:com.mebigfatguy.yank\"\u0026gt;\n    \u0026lt;property file=\"build.properties\"/\u0026gt;\n    \u0026lt;property name=\"src.dir\" value=\"${basedir}/src\" /\u0026gt;\n    \u0026lt;property name=\"classes.dir\" value=\"${basedir}/classes\" /\u0026gt;\n    \u0026lt;property name=\"lib.dir\" value=\"${basedir}/lib\" /\u0026gt;\n    \u0026lt;target name=\"clean\" description=\"removes all generated collateral\"\u0026gt;\n        \u0026lt;delete dir=\"${classes.dir}\" /\u0026gt;\n    \u0026lt;/target\u0026gt;\n    \u0026lt;target name=\"yank\" description=\"fetch 3rdparty jars from maven central\"\u0026gt;\n        \u0026lt;mkdir dir=\"${lib.dir}\" /\u0026gt;\n        \u0026lt;yank:yank yankFile=\"${basedir}/yank.xls\" destination=\"${lib.dir}\" source=\"true\" checkSHADigests=\"true\"\u0026gt;\n            \u0026lt;server url=\"https://repo1.maven.org/maven2\"/\u0026gt;\n            \u0026lt;generatePath classpathName=\"ty.classpath\" libraryDirName=\"$${lib.dir}\" /\u0026gt;\n        \u0026lt;/yank:yank\u0026gt;\n    \u0026lt;/target\u0026gt;\n    \u0026lt;target name=\"-init\" depends=\"yank\" description=\"prepares repository for a build\"\u0026gt;\n        \u0026lt;mkdir dir=\"${classes.dir}\" /\u0026gt;\n    \u0026lt;/target\u0026gt;\n    \u0026lt;target name=\"compile\" depends=\"-init\" description=\"compiles java files\"\u0026gt;\n        \u0026lt;javac srcdir=\"${src.dir}\" destdir=\"${classes.dir}\"\u0026gt;\n             \u0026lt;classpath refid=\"ty.classpath\" /\u0026gt;\n        \u0026lt;/javac\u0026gt;\n    \u0026lt;/target\u0026gt;\n    \u0026lt;target name=\"jar\" depends=\"compile\" description=\"produces the try jar file\"\u0026gt;\n        \u0026lt;jar destfile=\"${basedir}/try.jar\"\u0026gt;\n            \u0026lt;fileset dir=\"${classes.dir}\"\u0026gt;\n                \u0026lt;include name=\"**/*.class\" /\u0026gt;\n            \u0026lt;/fileset\u0026gt;\n        \u0026lt;/jar\u0026gt;  \n    \u0026lt;/target\u0026gt;\n\u0026lt;/project\u0026gt;\n\u003cpre\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmebigfatguy%2Fyank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmebigfatguy%2Fyank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmebigfatguy%2Fyank/lists"}