{"action":"closed","number":4081,"pull_request":{"url":"https://api.github.com/repos/pantsbuild/pants/pulls/4081","id":94458422,"html_url":"https://github.com/pantsbuild/pants/pull/4081","diff_url":"https://github.com/pantsbuild/pants/pull/4081.diff","patch_url":"https://github.com/pantsbuild/pants/pull/4081.patch","issue_url":"https://api.github.com/repos/pantsbuild/pants/issues/4081","number":4081,"state":"closed","locked":false,"title":"classmap: a jvm console task that outputs mapping from class products to their targets","user":{"login":"peiyuwang","id":2474428,"avatar_url":"https://avatars.githubusercontent.com/u/2474428?v=3","gravatar_id":"","url":"https://api.github.com/users/peiyuwang","html_url":"https://github.com/peiyuwang","followers_url":"https://api.github.com/users/peiyuwang/followers","following_url":"https://api.github.com/users/peiyuwang/following{/other_user}","gists_url":"https://api.github.com/users/peiyuwang/gists{/gist_id}","starred_url":"https://api.github.com/users/peiyuwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peiyuwang/subscriptions","organizations_url":"https://api.github.com/users/peiyuwang/orgs","repos_url":"https://api.github.com/users/peiyuwang/repos","events_url":"https://api.github.com/users/peiyuwang/events{/privacy}","received_events_url":"https://api.github.com/users/peiyuwang/received_events","type":"User","site_admin":false},"body":"The task is straightforward similar to `filemap` that prints out target-file mapings, this outputs\r\ntarget-class mappings.\r\n\r\nThis is useful when fixing compilation errors. One use case we encounter recently is to enable\r\n`strict_deps` for performance, there are transitive dependencies need to be added.\r\n\r\nThis can be achieved by first running `classmap` to get the transitive target-class mapping, then\r\nif after enabling `strict_deps`, we get error class X not found, we'll add X's mapping target\r\nto the dependencies.\r\n\r\nTest done\r\n========\r\nhttps://travis-ci.org/pantsbuild/pants/builds/177179488\r\n\r\nA sample run\r\n```\r\ntw-mbp-peiyu:pants peiyu$ ./pants classmap testprojects//tests/java/org/pantsbuild/testproject/cucumber:lib |head\r\norg.pantsbuild.testproject.cucumber.BadnamesSteps testprojects/tests/java/org/pantsbuild/testproject/cucumber:lib\r\norg.pantsbuild.testproject.cucumber.DemoSteps testprojects/tests/java/org/pantsbuild/testproject/cucumber:lib\r\norg.junit.ClassRule 3rdparty:junit\r\norg.junit.Assert 3rdparty:junit\r\norg.junit.After 3rdparty:junit\r\norg.junit.rules.Stopwatch$Clock 3rdparty:junit\r\norg.junit.rules.DisableOnDebug 3rdparty:junit\r\norg.junit.rules.ExternalResource 3rdparty:junit\r\norg.junit.rules.TestWatcher$1 3rdparty:junit\r\norg.junit.rules.TemporaryFolder 3rdparty:junit\r\n...\r\n```","created_at":"2016-11-19T00:02:23Z","updated_at":"2016-12-07T01:29:14Z","closed_at":"2016-12-07T01:29:14Z","merged_at":"2016-12-07T01:29:14Z","merge_commit_sha":"896f63d72d04da7dc1f67089c0a1b6e48b4a3948","assignee":{"login":"baroquebobcat","id":7378,"avatar_url":"https://avatars.githubusercontent.com/u/7378?v=3","gravatar_id":"","url":"https://api.github.com/users/baroquebobcat","html_url":"https://github.com/baroquebobcat","followers_url":"https://api.github.com/users/baroquebobcat/followers","following_url":"https://api.github.com/users/baroquebobcat/following{/other_user}","gists_url":"https://api.github.com/users/baroquebobcat/gists{/gist_id}","starred_url":"https://api.github.com/users/baroquebobcat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/baroquebobcat/subscriptions","organizations_url":"https://api.github.com/users/baroquebobcat/orgs","repos_url":"https://api.github.com/users/baroquebobcat/repos","events_url":"https://api.github.com/users/baroquebobcat/events{/privacy}","received_events_url":"https://api.github.com/users/baroquebobcat/received_events","type":"User","site_admin":false},"assignees":[{"login":"baroquebobcat","id":7378,"avatar_url":"https://avatars.githubusercontent.com/u/7378?v=3","gravatar_id":"","url":"https://api.github.com/users/baroquebobcat","html_url":"https://github.com/baroquebobcat","followers_url":"https://api.github.com/users/baroquebobcat/followers","following_url":"https://api.github.com/users/baroquebobcat/following{/other_user}","gists_url":"https://api.github.com/users/baroquebobcat/gists{/gist_id}","starred_url":"https://api.github.com/users/baroquebobcat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/baroquebobcat/subscriptions","organizations_url":"https://api.github.com/users/baroquebobcat/orgs","repos_url":"https://api.github.com/users/baroquebobcat/repos","events_url":"https://api.github.com/users/baroquebobcat/events{/privacy}","received_events_url":"https://api.github.com/users/baroquebobcat/received_events","type":"User","site_admin":false},{"login":"stuhood","id":46740,"avatar_url":"https://avatars.githubusercontent.com/u/46740?v=3","gravatar_id":"","url":"https://api.github.com/users/stuhood","html_url":"https://github.com/stuhood","followers_url":"https://api.github.com/users/stuhood/followers","following_url":"https://api.github.com/users/stuhood/following{/other_user}","gists_url":"https://api.github.com/users/stuhood/gists{/gist_id}","starred_url":"https://api.github.com/users/stuhood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stuhood/subscriptions","organizations_url":"https://api.github.com/users/stuhood/orgs","repos_url":"https://api.github.com/users/stuhood/repos","events_url":"https://api.github.com/users/stuhood/events{/privacy}","received_events_url":"https://api.github.com/users/stuhood/received_events","type":"User","site_admin":false},{"login":"ericzundel","id":119728,"avatar_url":"https://avatars.githubusercontent.com/u/119728?v=3","gravatar_id":"","url":"https://api.github.com/users/ericzundel","html_url":"https://github.com/ericzundel","followers_url":"https://api.github.com/users/ericzundel/followers","following_url":"https://api.github.com/users/ericzundel/following{/other_user}","gists_url":"https://api.github.com/users/ericzundel/gists{/gist_id}","starred_url":"https://api.github.com/users/ericzundel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericzundel/subscriptions","organizations_url":"https://api.github.com/users/ericzundel/orgs","repos_url":"https://api.github.com/users/ericzundel/repos","events_url":"https://api.github.com/users/ericzundel/events{/privacy}","received_events_url":"https://api.github.com/users/ericzundel/received_events","type":"User","site_admin":false},{"login":"benjyw","id":512764,"avatar_url":"https://avatars.githubusercontent.com/u/512764?v=3","gravatar_id":"","url":"https://api.github.com/users/benjyw","html_url":"https://github.com/benjyw","followers_url":"https://api.github.com/users/benjyw/followers","following_url":"https://api.github.com/users/benjyw/following{/other_user}","gists_url":"https://api.github.com/users/benjyw/gists{/gist_id}","starred_url":"https://api.github.com/users/benjyw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benjyw/subscriptions","organizations_url":"https://api.github.com/users/benjyw/orgs","repos_url":"https://api.github.com/users/benjyw/repos","events_url":"https://api.github.com/users/benjyw/events{/privacy}","received_events_url":"https://api.github.com/users/benjyw/received_events","type":"User","site_admin":false},{"login":"mateor","id":1743873,"avatar_url":"https://avatars.githubusercontent.com/u/1743873?v=3","gravatar_id":"","url":"https://api.github.com/users/mateor","html_url":"https://github.com/mateor","followers_url":"https://api.github.com/users/mateor/followers","following_url":"https://api.github.com/users/mateor/following{/other_user}","gists_url":"https://api.github.com/users/mateor/gists{/gist_id}","starred_url":"https://api.github.com/users/mateor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mateor/subscriptions","organizations_url":"https://api.github.com/users/mateor/orgs","repos_url":"https://api.github.com/users/mateor/repos","events_url":"https://api.github.com/users/mateor/events{/privacy}","received_events_url":"https://api.github.com/users/mateor/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/pantsbuild/pants/pulls/4081/commits","review_comments_url":"https://api.github.com/repos/pantsbuild/pants/pulls/4081/comments","review_comment_url":"https://api.github.com/repos/pantsbuild/pants/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pantsbuild/pants/issues/4081/comments","statuses_url":"https://api.github.com/repos/pantsbuild/pants/statuses/33a06a36ece9dd4b04731a2cc38c681ecaeca3ab","head":{"label":"peiyuwang:peiyu/classmap","ref":"peiyu/classmap","sha":"33a06a36ece9dd4b04731a2cc38c681ecaeca3ab","user":{"login":"peiyuwang","id":2474428,"avatar_url":"https://avatars.githubusercontent.com/u/2474428?v=3","gravatar_id":"","url":"https://api.github.com/users/peiyuwang","html_url":"https://github.com/peiyuwang","followers_url":"https://api.github.com/users/peiyuwang/followers","following_url":"https://api.github.com/users/peiyuwang/following{/other_user}","gists_url":"https://api.github.com/users/peiyuwang/gists{/gist_id}","starred_url":"https://api.github.com/users/peiyuwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peiyuwang/subscriptions","organizations_url":"https://api.github.com/users/peiyuwang/orgs","repos_url":"https://api.github.com/users/peiyuwang/repos","events_url":"https://api.github.com/users/peiyuwang/events{/privacy}","received_events_url":"https://api.github.com/users/peiyuwang/received_events","type":"User","site_admin":false},"repo":{"id":27841884,"name":"pants","full_name":"peiyuwang/pants","owner":{"login":"peiyuwang","id":2474428,"avatar_url":"https://avatars.githubusercontent.com/u/2474428?v=3","gravatar_id":"","url":"https://api.github.com/users/peiyuwang","html_url":"https://github.com/peiyuwang","followers_url":"https://api.github.com/users/peiyuwang/followers","following_url":"https://api.github.com/users/peiyuwang/following{/other_user}","gists_url":"https://api.github.com/users/peiyuwang/gists{/gist_id}","starred_url":"https://api.github.com/users/peiyuwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peiyuwang/subscriptions","organizations_url":"https://api.github.com/users/peiyuwang/orgs","repos_url":"https://api.github.com/users/peiyuwang/repos","events_url":"https://api.github.com/users/peiyuwang/events{/privacy}","received_events_url":"https://api.github.com/users/peiyuwang/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/peiyuwang/pants","description":"Pants Build System","fork":true,"url":"https://api.github.com/repos/peiyuwang/pants","forks_url":"https://api.github.com/repos/peiyuwang/pants/forks","keys_url":"https://api.github.com/repos/peiyuwang/pants/keys{/key_id}","collaborators_url":"https://api.github.com/repos/peiyuwang/pants/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/peiyuwang/pants/teams","hooks_url":"https://api.github.com/repos/peiyuwang/pants/hooks","issue_events_url":"https://api.github.com/repos/peiyuwang/pants/issues/events{/number}","events_url":"https://api.github.com/repos/peiyuwang/pants/events","assignees_url":"https://api.github.com/repos/peiyuwang/pants/assignees{/user}","branches_url":"https://api.github.com/repos/peiyuwang/pants/branches{/branch}","tags_url":"https://api.github.com/repos/peiyuwang/pants/tags","blobs_url":"https://api.github.com/repos/peiyuwang/pants/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/peiyuwang/pants/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/peiyuwang/pants/git/refs{/sha}","trees_url":"https://api.github.com/repos/peiyuwang/pants/git/trees{/sha}","statuses_url":"https://api.github.com/repos/peiyuwang/pants/statuses/{sha}","languages_url":"https://api.github.com/repos/peiyuwang/pants/languages","stargazers_url":"https://api.github.com/repos/peiyuwang/pants/stargazers","contributors_url":"https://api.github.com/repos/peiyuwang/pants/contributors","subscribers_url":"https://api.github.com/repos/peiyuwang/pants/subscribers","subscription_url":"https://api.github.com/repos/peiyuwang/pants/subscription","commits_url":"https://api.github.com/repos/peiyuwang/pants/commits{/sha}","git_commits_url":"https://api.github.com/repos/peiyuwang/pants/git/commits{/sha}","comments_url":"https://api.github.com/repos/peiyuwang/pants/comments{/number}","issue_comment_url":"https://api.github.com/repos/peiyuwang/pants/issues/comments{/number}","contents_url":"https://api.github.com/repos/peiyuwang/pants/contents/{+path}","compare_url":"https://api.github.com/repos/peiyuwang/pants/compare/{base}...{head}","merges_url":"https://api.github.com/repos/peiyuwang/pants/merges","archive_url":"https://api.github.com/repos/peiyuwang/pants/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/peiyuwang/pants/downloads","issues_url":"https://api.github.com/repos/peiyuwang/pants/issues{/number}","pulls_url":"https://api.github.com/repos/peiyuwang/pants/pulls{/number}","milestones_url":"https://api.github.com/repos/peiyuwang/pants/milestones{/number}","notifications_url":"https://api.github.com/repos/peiyuwang/pants/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/peiyuwang/pants/labels{/name}","releases_url":"https://api.github.com/repos/peiyuwang/pants/releases{/id}","deployments_url":"https://api.github.com/repos/peiyuwang/pants/deployments","created_at":"2014-12-10T22:02:15Z","updated_at":"2016-04-25T06:47:59Z","pushed_at":"2016-12-07T01:11:03Z","git_url":"git://github.com/peiyuwang/pants.git","ssh_url":"git@github.com:peiyuwang/pants.git","clone_url":"https://github.com/peiyuwang/pants.git","svn_url":"https://github.com/peiyuwang/pants","homepage":"http://pantsbuild.github.io/","size":78003,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pantsbuild:master","ref":"master","sha":"1334c37ef720d1f45d8d5ee7bba90005b29e4e1d","user":{"login":"pantsbuild","id":3065172,"avatar_url":"https://avatars.githubusercontent.com/u/3065172?v=3","gravatar_id":"","url":"https://api.github.com/users/pantsbuild","html_url":"https://github.com/pantsbuild","followers_url":"https://api.github.com/users/pantsbuild/followers","following_url":"https://api.github.com/users/pantsbuild/following{/other_user}","gists_url":"https://api.github.com/users/pantsbuild/gists{/gist_id}","starred_url":"https://api.github.com/users/pantsbuild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pantsbuild/subscriptions","organizations_url":"https://api.github.com/users/pantsbuild/orgs","repos_url":"https://api.github.com/users/pantsbuild/repos","events_url":"https://api.github.com/users/pantsbuild/events{/privacy}","received_events_url":"https://api.github.com/users/pantsbuild/received_events","type":"Organization","site_admin":false},"repo":{"id":7209075,"name":"pants","full_name":"pantsbuild/pants","owner":{"login":"pantsbuild","id":3065172,"avatar_url":"https://avatars.githubusercontent.com/u/3065172?v=3","gravatar_id":"","url":"https://api.github.com/users/pantsbuild","html_url":"https://github.com/pantsbuild","followers_url":"https://api.github.com/users/pantsbuild/followers","following_url":"https://api.github.com/users/pantsbuild/following{/other_user}","gists_url":"https://api.github.com/users/pantsbuild/gists{/gist_id}","starred_url":"https://api.github.com/users/pantsbuild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pantsbuild/subscriptions","organizations_url":"https://api.github.com/users/pantsbuild/orgs","repos_url":"https://api.github.com/users/pantsbuild/repos","events_url":"https://api.github.com/users/pantsbuild/events{/privacy}","received_events_url":"https://api.github.com/users/pantsbuild/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pantsbuild/pants","description":"Pants Build System","fork":false,"url":"https://api.github.com/repos/pantsbuild/pants","forks_url":"https://api.github.com/repos/pantsbuild/pants/forks","keys_url":"https://api.github.com/repos/pantsbuild/pants/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pantsbuild/pants/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pantsbuild/pants/teams","hooks_url":"https://api.github.com/repos/pantsbuild/pants/hooks","issue_events_url":"https://api.github.com/repos/pantsbuild/pants/issues/events{/number}","events_url":"https://api.github.com/repos/pantsbuild/pants/events","assignees_url":"https://api.github.com/repos/pantsbuild/pants/assignees{/user}","branches_url":"https://api.github.com/repos/pantsbuild/pants/branches{/branch}","tags_url":"https://api.github.com/repos/pantsbuild/pants/tags","blobs_url":"https://api.github.com/repos/pantsbuild/pants/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pantsbuild/pants/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pantsbuild/pants/git/refs{/sha}","trees_url":"https://api.github.com/repos/pantsbuild/pants/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pantsbuild/pants/statuses/{sha}","languages_url":"https://api.github.com/repos/pantsbuild/pants/languages","stargazers_url":"https://api.github.com/repos/pantsbuild/pants/stargazers","contributors_url":"https://api.github.com/repos/pantsbuild/pants/contributors","subscribers_url":"https://api.github.com/repos/pantsbuild/pants/subscribers","subscription_url":"https://api.github.com/repos/pantsbuild/pants/subscription","commits_url":"https://api.github.com/repos/pantsbuild/pants/commits{/sha}","git_commits_url":"https://api.github.com/repos/pantsbuild/pants/git/commits{/sha}","comments_url":"https://api.github.com/repos/pantsbuild/pants/comments{/number}","issue_comment_url":"https://api.github.com/repos/pantsbuild/pants/issues/comments{/number}","contents_url":"https://api.github.com/repos/pantsbuild/pants/contents/{+path}","compare_url":"https://api.github.com/repos/pantsbuild/pants/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pantsbuild/pants/merges","archive_url":"https://api.github.com/repos/pantsbuild/pants/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pantsbuild/pants/downloads","issues_url":"https://api.github.com/repos/pantsbuild/pants/issues{/number}","pulls_url":"https://api.github.com/repos/pantsbuild/pants/pulls{/number}","milestones_url":"https://api.github.com/repos/pantsbuild/pants/milestones{/number}","notifications_url":"https://api.github.com/repos/pantsbuild/pants/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pantsbuild/pants/labels{/name}","releases_url":"https://api.github.com/repos/pantsbuild/pants/releases{/id}","deployments_url":"https://api.github.com/repos/pantsbuild/pants/deployments","created_at":"2012-12-17T17:39:04Z","updated_at":"2016-12-05T23:18:13Z","pushed_at":"2016-12-07T01:29:14Z","git_url":"git://github.com/pantsbuild/pants.git","ssh_url":"git@github.com:pantsbuild/pants.git","clone_url":"https://github.com/pantsbuild/pants.git","svn_url":"https://github.com/pantsbuild/pants","homepage":"http://pantsbuild.github.io/","size":96247,"stargazers_count":704,"watchers_count":704,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":201,"mirror_url":null,"open_issues_count":437,"forks":201,"open_issues":437,"watchers":704,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pantsbuild/pants/pulls/4081"},"html":{"href":"https://github.com/pantsbuild/pants/pull/4081"},"issue":{"href":"https://api.github.com/repos/pantsbuild/pants/issues/4081"},"comments":{"href":"https://api.github.com/repos/pantsbuild/pants/issues/4081/comments"},"review_comments":{"href":"https://api.github.com/repos/pantsbuild/pants/pulls/4081/comments"},"review_comment":{"href":"https://api.github.com/repos/pantsbuild/pants/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pantsbuild/pants/pulls/4081/commits"},"statuses":{"href":"https://api.github.com/repos/pantsbuild/pants/statuses/33a06a36ece9dd4b04731a2cc38c681ecaeca3ab"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"peiyuwang","id":2474428,"avatar_url":"https://avatars.githubusercontent.com/u/2474428?v=3","gravatar_id":"","url":"https://api.github.com/users/peiyuwang","html_url":"https://github.com/peiyuwang","followers_url":"https://api.github.com/users/peiyuwang/followers","following_url":"https://api.github.com/users/peiyuwang/following{/other_user}","gists_url":"https://api.github.com/users/peiyuwang/gists{/gist_id}","starred_url":"https://api.github.com/users/peiyuwang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/peiyuwang/subscriptions","organizations_url":"https://api.github.com/users/peiyuwang/orgs","repos_url":"https://api.github.com/users/peiyuwang/repos","events_url":"https://api.github.com/users/peiyuwang/events{/privacy}","received_events_url":"https://api.github.com/users/peiyuwang/received_events","type":"User","site_admin":false},"comments":0,"review_comments":7,"commits":9,"additions":202,"deletions":5,"changed_files":7}}
{"actor":{"display_login":"peiyuwang"}}