diff --git a/README.md b/README.md index 28a3baf53..cb9029589 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ framework. ###### Gradle ``` -testImplementation 'com.tngtech.archunit:archunit:1.2.1' +testImplementation 'com.tngtech.archunit:archunit:1.3.0' ``` ###### Maven @@ -26,7 +26,7 @@ testImplementation 'com.tngtech.archunit:archunit:1.2.1' com.tngtech.archunit archunit - 1.2.1 + 1.3.0 test ``` diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index 131d75b01..1075141df 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -10,6 +10,6 @@ main: - title: "User Guide" url: /userguide/html/000_Index.html - title: "API" - url: https://javadoc.io/doc/com.tngtech.archunit/archunit/1.2.1 + url: https://javadoc.io/doc/com.tngtech.archunit/archunit/1.3.0 - title: "About" url: /about diff --git a/docs/_pages/getting-started.md b/docs/_pages/getting-started.md index c0920c3b1..2107f8219 100644 --- a/docs/_pages/getting-started.md +++ b/docs/_pages/getting-started.md @@ -15,7 +15,7 @@ ArchUnit can be obtained from Maven Central. com.tngtech.archunit archunit - 1.2.1 + 1.3.0 test ``` @@ -23,7 +23,7 @@ ArchUnit can be obtained from Maven Central. #### Gradle ```groovy dependencies { - testImplementation 'com.tngtech.archunit:archunit:1.2.1' + testImplementation 'com.tngtech.archunit:archunit:1.3.0' } ``` diff --git a/docs/_pages/use-cases.md b/docs/_pages/use-cases.md index d27ef4fe2..8529bcb59 100644 --- a/docs/_pages/use-cases.md +++ b/docs/_pages/use-cases.md @@ -23,7 +23,7 @@ classes().that().resideInAPackage("..foo..") ## Class Dependency Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c617373204f746865720a636c61737320466f6f4261720a0a4f74686572202d3e20466f6f4261720a6e6f746520746f70206f6e206c696e6b20236372696d736f6e3a20666f7262696464656e0a0a426172202d2d3e20466f6f4261722023677265656e0a6e6f7465206c656674206f6e206c696e6b2023677265656e3a20616c6c6f776564) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c617373204f746865720a636c61737320466f6f4261720a0a4f74686572202d3e20466f6f4261720a6e6f746520746f70206f6e206c696e6b20236372696d736f6e3a20666f7262696464656e0a0a426172202d2d3e20466f6f4261722023677265656e0a6e6f7465206c656674206f6e206c696e6b2023677265656e3a20616c6c6f7765640a40656e64756d6c) ``` classes().that().haveNameMatching(".*Bar") @@ -33,7 +33,7 @@ classes().that().haveNameMatching(".*Bar") ## Class and Package Containment Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e666f6f207b0a20202020636c61737320466f6f536572766963650a7d0a0a7061636b61676520636f6d2e77726f6e67207b0a20202020636c61737320466f6f436f6e74726f6c6c65720a7d0a0a6e6f746520227265736964657320696e2077726f6e67207061636b616765222061732057726f6e675061636b61676520236372696d736f6e0a466f6f436f6e74726f6c6c6572202e2e2057726f6e675061636b616765) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a73657420736570617261746f72206e6f6e650a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e666f6f207b0a20202020636c61737320466f6f536572766963650a7d0a0a7061636b61676520636f6d2e77726f6e67207b0a20202020636c61737320466f6f436f6e74726f6c6c65720a7d0a0a6e6f746520227265736964657320696e2077726f6e67207061636b616765222061732057726f6e675061636b61676520236372696d736f6e0a466f6f436f6e74726f6c6c6572202e2e2057726f6e675061636b6167650a40656e64756d6c) ``` classes().that().haveSimpleNameStartingWith("Foo") @@ -43,14 +43,14 @@ classes().that().haveSimpleNameStartingWith("Foo") ## Inheritance Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c61737320436f6e6e656374696f6e203c3c696e746572666163653e3e0a636c6173732048746d6c436f6e6e656374696f6e203c3c636f6e63726574653e3e0a636c61737320467470436f6e6e656374696f6e203c3c636f6e63726574653e3e0a636c617373205373685468696e67203c3c636f6e63726574653e3e0a0a48746d6c436f6e6e656374696f6e202d2d7c3e20436f6e6e656374696f6e2023677265656e0a467470436f6e6e656374696f6e202d2d7c3e20436f6e6e656374696f6e2023677265656e0a5373685468696e67202d2d7c3e20436f6e6e656374696f6e20236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204861732077726f6e67206e616d65) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c61737320436f6e6e656374696f6e203c3c696e746572666163653e3e0a636c6173732048746d6c436f6e6e656374696f6e203c3c636f6e63726574653e3e0a636c61737320467470436f6e6e656374696f6e203c3c636f6e63726574653e3e0a636c617373205373685468696e67203c3c636f6e63726574653e3e0a0a48746d6c436f6e6e656374696f6e202d2d7c3e20436f6e6e656374696f6e2023677265656e0a467470436f6e6e656374696f6e202d2d7c3e20436f6e6e656374696f6e2023677265656e0a5373685468696e67202d2d7c3e20436f6e6e656374696f6e20236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204861732077726f6e67206e616d650a40656e64756d6c) ``` classes().that().implement(Connection.class) .should().haveSimpleNameEndingWith("Connection") ``` -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e70657273697374656e6365207b0a20202020636c6173732056616c696450657273697374656e6365557365720a7d0a0a7061636b61676520636f6d2e6d796170702e736f6d657768657265656c7365207b0a20202020636c61737320496c6c6567616c50657273697374656e6365557365720a7d0a0a636c61737320456e746974794d616e616765720a0a56616c696450657273697374656e636555736572202d2d3e20456e746974794d616e616765722023677265656e0a496c6c6567616c50657273697374656e636555736572202d2d3e20456e746974794d616e6167657220236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204163636573736f72207265736964657320696e2077726f6e67207061636b616765) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a73657420736570617261746f72206e6f6e650a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e70657273697374656e6365207b0a20202020636c6173732056616c696450657273697374656e6365557365720a7d0a0a7061636b61676520636f6d2e6d796170702e736f6d657768657265656c7365207b0a20202020636c61737320496c6c6567616c50657273697374656e6365557365720a7d0a0a636c61737320456e746974794d616e616765720a0a56616c696450657273697374656e636555736572202d2d3e20456e746974794d616e616765722023677265656e0a496c6c6567616c50657273697374656e636555736572202d2d3e20456e746974794d616e6167657220236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204163636573736f72207265736964657320696e2077726f6e67207061636b6167650a40656e64756d6c) ``` classes().that().areAssignableTo(EntityManager.class) @@ -60,7 +60,7 @@ classes().that().areAssignableTo(EntityManager.class) ## Annotation Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c6173732056616c696450657273697374656e636555736572203c3c405472616e73616374696f6e616c3e3e0a636c61737320496c6c6567616c50657273697374656e636555736572203c3c6e6f74207472616e73616374696f6e616c3e3e0a0a636c61737320456e746974794d616e616765720a0a56616c696450657273697374656e636555736572202d2d3e20456e746974794d616e616765722023677265656e0a496c6c6567616c50657273697374656e636555736572202d2d3e20456e746974794d616e6167657220236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204163636573736f72206973206e6f7420616e6e6f7461746564207769746820405472616e73616374696f6e616c) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a636c6173732056616c696450657273697374656e636555736572203c3c405472616e73616374696f6e616c3e3e0a636c61737320496c6c6567616c50657273697374656e636555736572203c3c6e6f74207472616e73616374696f6e616c3e3e0a0a636c61737320456e746974794d616e616765720a0a56616c696450657273697374656e636555736572202d2d3e20456e746974794d616e616765722023677265656e0a496c6c6567616c50657273697374656e636555736572202d2d3e20456e746974794d616e6167657220236372696d736f6e0a0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a204163636573736f72206973206e6f7420616e6e6f7461746564207769746820405472616e73616374696f6e616c0a40656e64756d6c) ``` classes().that().areAssignableTo(EntityManager.class) @@ -70,7 +70,7 @@ classes().that().areAssignableTo(EntityManager.class) ## Layer Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e636f6e74726f6c6c6572207b0a20202020636c61737320536f6d65436f6e74726f6c6c65724f6e650a20202020636c61737320536f6d65436f6e74726f6c6c657254776f0a7d0a7061636b61676520636f6d2e6d796170702e73657276696365207b0a20202020636c61737320536f6d65536572766963654f6e650a20202020636c61737320536f6d655365727669636554776f0a7d0a7061636b61676520636f6d2e6d796170702e70657273697374656e6365207b0a20202020636c61737320536f6d6550657273697374656e63654d616e616765720a7d0a0a536f6d65436f6e74726f6c6c65724f6e65202d2d3e20536f6d65536572766963654f6e652023677265656e0a536f6d655365727669636554776f202d646f776e2d3e20536f6d6550657273697374656e63654d616e616765722023677265656e0a0a536f6d65436f6e74726f6c6c65724f6e65202d646f776e2d3e20536f6d6550657273697374656e63654d616e6167657220236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a20416363657373206279706173736573206c61796572730a0a536f6d655365727669636554776f202d75702d2d3e20536f6d65436f6e74726f6c6c657254776f20236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a2041636365737320676f657320616761696e7374206c61796572730a0a536f6d6550657273697374656e63654d616e61676572202d75702d2d3e20536f6d65536572766963654f6e6520236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a2041636365737320676f657320616761696e7374206c6179657273) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a73657420736570617261746f72206e6f6e650a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e636f6e74726f6c6c6572207b0a20202020636c61737320536f6d65436f6e74726f6c6c65724f6e650a20202020636c61737320536f6d65436f6e74726f6c6c657254776f0a7d0a7061636b61676520636f6d2e6d796170702e73657276696365207b0a20202020636c61737320536f6d65536572766963654f6e650a20202020636c61737320536f6d655365727669636554776f0a7d0a7061636b61676520636f6d2e6d796170702e70657273697374656e6365207b0a20202020636c61737320536f6d6550657273697374656e63654d616e616765720a7d0a0a536f6d65436f6e74726f6c6c65724f6e65202d2d3e20536f6d65536572766963654f6e652023677265656e0a536f6d655365727669636554776f202d646f776e2d3e20536f6d6550657273697374656e63654d616e616765722023677265656e0a0a536f6d65436f6e74726f6c6c65724f6e65202d646f776e2d3e20536f6d6550657273697374656e63654d616e6167657220236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a20416363657373206279706173736573206c61796572730a0a536f6d655365727669636554776f202d75702d2d3e20536f6d65436f6e74726f6c6c657254776f20236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a2041636365737320676f657320616761696e7374206c61796572730a0a536f6d6550657273697374656e63654d616e61676572202d75702d2d3e20536f6d65536572766963654f6e6520236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a2041636365737320676f657320616761696e7374206c61796572730a40656e64756d6c) ``` layeredArchitecture() @@ -87,7 +87,7 @@ layeredArchitecture() ## Cycle Checks -![diagram](http://www.plantuml.com/plantuml/svg/~h736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e6d6f64756c656f6e65207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c654f6e650a20202020636c61737320436c61737354776f496e4d6f64756c654f6e650a7d0a7061636b61676520636f6d2e6d796170702e6d6f64756c6574776f207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c6554776f0a20202020636c61737320436c61737354776f496e4d6f64756c6554776f0a7d0a7061636b61676520636f6d2e6d796170702e6d6f64756c657468726565207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c6554687265650a20202020636c61737320436c61737354776f496e4d6f64756c6554687265650a7d0a0a436c6173734f6e65496e4d6f64756c654f6e65202d2d3e20436c61737354776f496e4d6f64756c6554776f20236372696d736f6e0a436c6173734f6e65496e4d6f64756c6554776f202d2d3e20436c6173734f6e65496e4d6f64756c65546872656520236372696d736f6e0a436c61737354776f496e4d6f64756c655468726565202d2d3e20436c6173734f6e65496e4d6f64756c654f6e6520236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a20436f6d62696e6174696f6e206f6620616363657373657320666f726d73206379636c65) +![diagram](http://www.plantuml.com/plantuml/svg/~h407374617274756d6c0a6869646520656d707479206d656d626572730a73657420736570617261746f72206e6f6e650a736b696e706172616d20636f6d706f6e656e745374796c6520756d6c320a0a736b696e706172616d20636f6d706f6e656e74207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a736b696e706172616d20636c617373207b0a2020426f72646572436f6c6f722023677265790a20204261636b67726f756e64436f6c6f72202377686974650a7d0a0a7061636b61676520636f6d2e6d796170702e6d6f64756c656f6e65207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c654f6e650a20202020636c61737320436c61737354776f496e4d6f64756c654f6e650a7d0a7061636b61676520636f6d2e6d796170702e6d6f64756c6574776f207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c6554776f0a20202020636c61737320436c61737354776f496e4d6f64756c6554776f0a7d0a7061636b61676520636f6d2e6d796170702e6d6f64756c657468726565207b0a20202020636c61737320436c6173734f6e65496e4d6f64756c6554687265650a20202020636c61737320436c61737354776f496e4d6f64756c6554687265650a7d0a0a436c6173734f6e65496e4d6f64756c654f6e65202d2d3e20436c61737354776f496e4d6f64756c6554776f20236372696d736f6e0a436c6173734f6e65496e4d6f64756c6554776f202d2d3e20436c6173734f6e65496e4d6f64756c65546872656520236372696d736f6e0a436c61737354776f496e4d6f64756c655468726565202d2d3e20436c6173734f6e65496e4d6f64756c654f6e6520236372696d736f6e0a6e6f7465207269676874206f6e206c696e6b20236372696d736f6e3a20436f6d62696e6174696f6e206f6620616363657373657320666f726d73206379636c650a40656e64756d6c) ``` slices().matching("com.myapp.(*)..").should().beFreeOfCycles() diff --git a/docs/_posts/2024-04-11-release-v1.3.0.markdown b/docs/_posts/2024-04-11-release-v1.3.0.markdown new file mode 100644 index 000000000..788aa0020 --- /dev/null +++ b/docs/_posts/2024-04-11-release-v1.3.0.markdown @@ -0,0 +1,8 @@ +--- +layout: splash +title: "New release of ArchUnit (v1.3.0)" +date: 2024-04-11 12:00:00 +categories: news release +--- + +A new release of ArchUnit (v1.3.0) is out. For details see [the release on GitHub](https://github.com/TNG/ArchUnit/releases/tag/v1.3.0 "ArchUnit v1.3.0 on GitHub"). diff --git a/docs/userguide/html/000_Index.html b/docs/userguide/html/000_Index.html index 9d98130b2..0002281ee 100644 --- a/docs/userguide/html/000_Index.html +++ b/docs/userguide/html/000_Index.html @@ -4,7 +4,7 @@ - + ArchUnit User Guide @@ -444,12 +444,13 @@ } + @@ -713,7 +714,7 @@

3.1
-
JavaClasses classes = new ClassFileImporter().importPackages("com.mycompany.myapp");
+
JavaClasses classes = new ClassFileImporter().importPackages("com.mycompany.myapp");
@@ -723,7 +724,7 @@

3.1

-
JavaClasses classes = new ClassFileImporter().importPath("/some/path");
+
JavaClasses classes = new ClassFileImporter().importPath("/some/path");
@@ -733,7 +734,7 @@

3.1

-
JavaClass clazz = classes.get(Object.class);
+
JavaClass clazz = classes.get(Object.class);
 System.out.print(clazz.getSimpleName()); // returns 'Object'
@@ -747,7 +748,7 @@

@@ -770,7 +771,7 @@

-
@Test
+
@Test
 public void Services_should_only_be_accessed_by_Controllers() {
     JavaClasses importedClasses = new ClassFileImporter().importPackages("com.mycompany.myapp");
 
@@ -796,7 +797,7 @@ 

-
@RunWith(ArchUnitRunner.class) // Remove this line for JUnit 5!!
+
@RunWith(ArchUnitRunner.class) // Remove this line for JUnit 5!!
 @AnalyzeClasses(packages = "com.mycompany.myapp")
 public class MyArchitectureTest {
 
@@ -823,7 +824,7 @@ 

-
@RunWith(ArchUnitRunner::class) // Remove this line for JUnit 5!!
+
@RunWith(ArchUnitRunner::class) // Remove this line for JUnit 5!!
 @AnalyzeClasses(packagesOf = [MyArchitectureTest::class])
 class MyArchitectureTest {
     @ArchTest
@@ -850,23 +851,23 @@ 

4. What to

4.1. Package Dependency Checks

-package deps no access +package deps no access
-
noClasses().that().resideInAPackage("..source..")
+
noClasses().that().resideInAPackage("..source..")
     .should().dependOnClassesThat().resideInAPackage("..foo..")
-package deps only access +package deps only access
-
classes().that().resideInAPackage("..foo..")
+
classes().that().resideInAPackage("..foo..")
     .should().onlyHaveDependentClassesThat().resideInAnyPackage("..source.one..", "..foo..")
@@ -875,12 +876,12 @@

4.2. Class Dependency Checks

-class naming deps +class naming deps
-
classes().that().haveNameMatching(".*Bar")
+
classes().that().haveNameMatching(".*Bar")
     .should().onlyHaveDependentClassesThat().haveSimpleName("Bar")
@@ -889,12 +890,12 @@

4.3. Class and Package Containment Checks

-class package contain +class package contain
-
classes().that().haveSimpleNameStartingWith("Foo")
+
classes().that().haveSimpleNameStartingWith("Foo")
     .should().resideInAPackage("com.foo")
@@ -903,23 +904,23 @@

4.4. Inheritance Checks

-inheritance naming check +inheritance naming check
-
classes().that().implement(Connection.class)
+
classes().that().implement(Connection.class)
     .should().haveSimpleNameEndingWith("Connection")
-inheritance access check +inheritance access check
-
classes().that().areAssignableTo(EntityManager.class)
+
classes().that().areAssignableTo(EntityManager.class)
     .should().onlyHaveDependentClassesThat().resideInAnyPackage("..persistence..")
@@ -928,12 +929,12 @@

4

4.5. Annotation Checks

-inheritance annotation check +inheritance annotation check
-
classes().that().areAssignableTo(EntityManager.class)
+
classes().that().areAssignableTo(EntityManager.class)
     .should().onlyHaveDependentClassesThat().areAnnotatedWith(Transactional.class)
@@ -942,12 +943,12 @@

4.5

4.6. Layer Checks

-layer check +layer check
-
layeredArchitecture()
+
layeredArchitecture()
     .consideringAllDependencies()
     .layer("Controller").definedBy("..controller..")
     .layer("Service").definedBy("..service..")
@@ -963,12 +964,12 @@ 

4.6. Layer Ch

4.7. Cycle Checks

-cycle check +cycle check
-
slices().matching("com.myapp.(*)..").should().beFreeOfCycles()
+
slices().matching("com.myapp.(*)..").should().beFreeOfCycles()
@@ -1003,7 +1004,7 @@

5.1. Core

-
JavaClasses classes = new ClassFileImporter().importPackages("com.mycompany.myapp");
+
JavaClasses classes = new ClassFileImporter().importPackages("com.mycompany.myapp");
@@ -1027,7 +1028,7 @@

5.2. Lang

-
ArchRule rule =
+
ArchRule rule =
     classes().that().resideInAPackage("..service..")
         .should().onlyBeAccessed().byAnyPackage("..controller..", "..service..");
@@ -1037,7 +1038,7 @@

5.2. Lang

-
JavaClasses importedClasses = new ClassFileImporter().importPackage("com.myapp");
+
JavaClasses importedClasses = new ClassFileImporter().importPackage("com.myapp");
 ArchRule rule = // define the rule
 rule.check(importedClasses);
@@ -1074,7 +1075,7 @@

6.1. Import

-
JavaClasses classes = new ClassFileImporter().importClasspath();
+
JavaClasses classes = new ClassFileImporter().importClasspath();
@@ -1083,7 +1084,7 @@

6.1. Import

-
JavaClasses classes = new ClassFileImporter().importPath("/some/path/to/classes");
+
JavaClasses classes = new ClassFileImporter().importPath("/some/path/to/classes");
@@ -1097,7 +1098,7 @@

6.1. Import

-
ImportOption ignoreTests = new ImportOption() {
+
ImportOption ignoreTests = new ImportOption() {
     @Override
     public boolean includes(Location location) {
         return !location.contains("/test/"); // ignore any URI to sources that contains '/test/'
@@ -1127,7 +1128,7 @@ 

6.1. Import

-
new ClassFileImporter()
+
new ClassFileImporter()
     .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_JARS)
     .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
     .importClasspath();
@@ -1171,7 +1172,7 @@

6.2. Domain

-domain overview +domain overview
@@ -1200,7 +1201,7 @@

6.2. Domain

-resolution example +resolution example
@@ -1215,7 +1216,7 @@

6.2. Domain

-resolution overview +resolution overview
@@ -1235,7 +1236,7 @@

6.2. Domain

-diamond example +diamond example
@@ -1259,7 +1260,7 @@

@@ -1329,7 +1330,7 @@

-
Set<JavaClass> services = new HashSet<>();
+
Set<JavaClass> services = new HashSet<>();
 for (JavaClass clazz : classes) {
     // choose those classes with FQN with infix '.service.'
     if (clazz.getName().contains(".service.")) {
@@ -1365,7 +1366,7 @@ 

-
ArchRule rule = ArchRuleDefinition.noClasses()
+
ArchRule rule = ArchRuleDefinition.noClasses()
     .that().resideInAPackage("..service..")
     .should().accessClassesThat().resideInAPackage("..controller..");
 
@@ -1380,7 +1381,7 @@ 

-
java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] -
+
java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] -
 Rule 'no classes that reside in a package '..service..'
 should access classes that reside in a package '..controller..'' was violated (1 times):
 Method <some.pkg.service.SomeService.callController()>
@@ -1395,7 +1396,7 @@ 

-
noClasses()
+
noClasses()
     .that().resideInAPackage("..service..")
     .or().resideInAPackage("..persistence..")
     .should().accessClassesThat().resideInAPackage("..controller..")
@@ -1415,7 +1416,7 @@ 

-
ArchRule rule = ArchRuleDefinition.methods()
+
ArchRule rule = ArchRuleDefinition.methods()
     .that().arePublic()
     .and().areDeclaredInClassesThat().resideInAPackage("..controller..")
     .should().beAnnotatedWith(Secured.class);
@@ -1446,7 +1447,7 @@ 

-
DescribedPredicate<JavaClass> resideInAPackageService = // define the predicate
+
DescribedPredicate<JavaClass> resideInAPackageService = // define the predicate
 ArchCondition<JavaClass> accessClassesThatResideInAPackageController = // define the condition
 
 noClasses().that(resideInAPackageService)
@@ -1460,7 +1461,7 @@ 

@@ -1515,7 +1516,7 @@

@@ -1541,7 +1542,7 @@

-
// Does not compile, because type(..) targets a subtype of HasName
+
// Does not compile, because type(..) targets a subtype of HasName
 HasName.Predicates.name("").and(JavaClass.Predicates.type(Serializable.class))
 
 // Does compile, because name(..) targets a supertype of JavaClass
@@ -1563,7 +1564,7 @@ 

@@ -1603,7 +1604,7 @@

@@ -1697,7 +1698,7 @@

archunit_ignore_patterns.txt
-
# There are many known violations where LegacyService is involved; we'll ignore them all
+
# There are many known violations where LegacyService is involved; we'll ignore them all
 .*some\.pkg\.LegacyService.*

@@ -1719,7 +1720,7 @@

8.1. Archit

-
com.tngtech.archunit.library.Architectures
+
com.tngtech.archunit.library.Architectures
@@ -1742,7 +1743,7 @@

8

-
onionArchitecture()
+
onionArchitecture()
         .domainModels("com.myapp.domain.model..")
         .domainServices("com.myapp.domain.service..")
         .applicationServices("com.myapp.application..")
@@ -1785,7 +1786,7 @@ 

8

-onion architecture check +onion architecture check
@@ -1798,7 +1799,7 @@

8.2. Slices

-
com.tngtech.archunit.library.dependencies.SlicesRuleDefinition
+
com.tngtech.archunit.library.dependencies.SlicesRuleDefinition
@@ -1807,7 +1808,7 @@

8.2. Slices

-
// sort classes by the first package after 'myapp'
+
// sort classes by the first package after 'myapp'
 // then check those slices for cyclic dependencies
 SlicesRuleDefinition.slices().matching("..myapp.(*)..").should().beFreeOfCycles()
 
@@ -1827,7 +1828,7 @@ 

8.2. Slices

-
SliceAssignment legacyPackageStructure = new SliceAssignment() {
+
SliceAssignment legacyPackageStructure = new SliceAssignment() {
     // this will specify which classes belong together in the same slice
     @Override
     public SliceIdentifier getIdentifierOf(JavaClass javaClass) {
@@ -1885,7 +1886,7 @@ 

-
com.tngtech.archunit.library.cycle_detection.CycleDetector
+
com.tngtech.archunit.library.cycle_detection.CycleDetector

-
ModuleRuleDefinition.modules().definedByPackages("..example.(*)..").should().beFreeOfCycles();
+
ModuleRuleDefinition.modules().definedByPackages("..example.(*)..").should().beFreeOfCycles();
@@ -1948,7 +1949,7 @@

<
com/myapp/example/module_one/package-info.java
-
modules()
+
modules()
   .definedByAnnotation(AppModule.class)
   .should().respectTheirAllowedDependenciesDeclaredIn("allowedDependencies",
       consideringOnlyDependenciesInAnyPackage("..example.."))
@@ -1991,7 +1992,7 @@ 

-
com.tngtech.archunit.library
+
com.tngtech.archunit.library
-
// considers all dependencies possible (including java.lang, java.util, ...)
+
// considers all dependencies possible (including java.lang, java.util, ...)
 classes().should(adhereToPlantUmlDiagram(
         mydiagram, consideringAllDependencies())
 
@@ -2140,7 +2141,7 @@ 

8.5.1

-
// there are further ignore flavors available
+
// there are further ignore flavors available
 classes().should(adhereToPlantUmlDiagram(mydiagram).ignoreDependencies(predicate))
@@ -2202,7 +2203,7 @@

8.6.1. Usage

-
ArchRule rule = FreezingArchRule.freeze(classes().should()./*complete ArchRule*/);
+
ArchRule rule = FreezingArchRule.freeze(classes().should()./*complete ArchRule*/);
@@ -2282,7 +2283,7 @@
Violati
-
FreezingArchRule.freeze(rule).persistIn(customViolationStore);
+
FreezingArchRule.freeze(rule).persistIn(customViolationStore);
@@ -2397,7 +2398,7 @@

Example

-lakos example +lakos example
@@ -2413,7 +2414,7 @@
H
-
import com.tngtech.archunit.library.metrics.ArchitectureMetrics;
+
import com.tngtech.archunit.library.metrics.ArchitectureMetrics;
 // ...
 
 JavaClasses classes = // ...
@@ -2482,7 +2483,7 @@ 
Example
-martin example +martin example
@@ -2493,7 +2494,7 @@
<
-
@Test
+
@Test
 public void rule1() {
     JavaClasses importedClasses = new ClassFileImporter().importClasspath();
 
@@ -2624,7 +2625,7 @@ 

9.1.1. Writ

-
@RunWith(ArchUnitRunner.class) // Remove this line for JUnit 5!!
+
@RunWith(ArchUnitRunner.class) // Remove this line for JUnit 5!!
 @AnalyzeClasses(packages = "com.myapp")
 public class ArchitectureTest {
 
@@ -2662,7 +2663,7 @@ 

-
@AnalyzeClasses(packages = {"com.myapp.subone", "com.myapp.subtwo"})
+
@AnalyzeClasses(packages = {"com.myapp.subone", "com.myapp.subtwo"})

@@ -2679,7 +2680,7 @@

@@ -2722,7 +2723,7 @@

-
@AnalyzeClasses(packages = "com.myapp.special", cacheMode = CacheMode.PER_CLASS)
+
@AnalyzeClasses(packages = "com.myapp.special", cacheMode = CacheMode.PER_CLASS)
-
public class ArchitectureTest {
+
public class ArchitectureTest {
 
     // will run
     @ArchTest
@@ -2765,7 +2766,7 @@ 

9.1.5. Gr

-
public class ServiceRules {
+
public class ServiceRules {
     @ArchTest
     public static final ArchRule ruleOne = ...
 
@@ -2799,7 +2800,29 @@ 

9.1.5. Gr

-

9.1.6. Generating Display Names

+

9.1.6. Executing Single Rules

+
+

It is possible to filter specific rules (e.g. @ArchTest fields) via archunit.properties (compare Advanced Configuration).

+
+
+
archunit.properties
+
+
# Specify the field or method name here. Multiple names can be joined by ','
+junit.testFilter=my_custom_rule_field
+
+
+
+

As always with archunit.properties, this can also be passed dynamically using a system property, +E.g. passing

+
+
+
+
-Darchunit.junit.testFilter=my_custom_rule_field
+
+
+
+
+

9.1.7. Generating Display Names

ArchUnit offers the possibility to generate more readable names in the test report by replacing underscores in the original rule names by spaces. For example, if a method or field is named

@@ -2908,7 +2931,7 @@

-
com.tngtech.archunit.core.importer.resolvers.ClassResolver
+
com.tngtech.archunit.core.importer.resolvers.ClassResolver

@@ -3018,7 +3041,7 @@

-
javaClass.getSource().get().getMd5sum()
+
javaClass.getSource().get().getMd5sum()

@@ -3031,7 +3054,7 @@

-
classes().that().resideInAPackage("com.myapp.old").should()...
+
classes().that().resideInAPackage("com.myapp.old").should()...

@@ -3080,7 +3103,7 @@

-
com.tngtech.archunit.lang.FailureDisplayFormat
+
com.tngtech.archunit.lang.FailureDisplayFormat
@@ -3097,7 +3120,7 @@

- - - + + \ No newline at end of file diff --git a/docs/userguide/html/class-naming-deps.png b/docs/userguide/html/class-naming-deps.png deleted file mode 100644 index dcb3c74b4..000000000 Binary files a/docs/userguide/html/class-naming-deps.png and /dev/null differ diff --git a/docs/userguide/html/class-naming-deps.svg b/docs/userguide/html/class-naming-deps.svg new file mode 100644 index 000000000..c5c7c6f9a --- /dev/null +++ b/docs/userguide/html/class-naming-deps.svg @@ -0,0 +1 @@ +OtherFooBarBarforbiddenallowed \ No newline at end of file diff --git a/docs/userguide/html/class-package-contain.png b/docs/userguide/html/class-package-contain.png deleted file mode 100644 index ee3cc8b7a..000000000 Binary files a/docs/userguide/html/class-package-contain.png and /dev/null differ diff --git a/docs/userguide/html/class-package-contain.svg b/docs/userguide/html/class-package-contain.svg new file mode 100644 index 000000000..2e89f2328 --- /dev/null +++ b/docs/userguide/html/class-package-contain.svg @@ -0,0 +1 @@ +com.foocom.wrongFooServiceFooControllerresides in wrong package \ No newline at end of file diff --git a/docs/userguide/html/cycle-check.png b/docs/userguide/html/cycle-check.png deleted file mode 100644 index 5bfb665b1..000000000 Binary files a/docs/userguide/html/cycle-check.png and /dev/null differ diff --git a/docs/userguide/html/cycle-check.svg b/docs/userguide/html/cycle-check.svg new file mode 100644 index 000000000..a7b706f10 --- /dev/null +++ b/docs/userguide/html/cycle-check.svg @@ -0,0 +1 @@ +com.myapp.moduleonecom.myapp.moduletwocom.myapp.modulethreeClassOneInModuleOneClassTwoInModuleOneClassOneInModuleTwoClassTwoInModuleTwoClassOneInModuleThreeClassTwoInModuleThreeCombination of accesses forms cycle \ No newline at end of file diff --git a/docs/userguide/html/diamond-example.png b/docs/userguide/html/diamond-example.png deleted file mode 100644 index 9b245ba81..000000000 Binary files a/docs/userguide/html/diamond-example.png and /dev/null differ diff --git a/docs/userguide/html/diamond-example.svg b/docs/userguide/html/diamond-example.svg new file mode 100644 index 000000000..850cc79ed --- /dev/null +++ b/docs/userguide/html/diamond-example.svg @@ -0,0 +1 @@ +«interface»Avoid targetMethod()«interface»Bvoid targetMethod()«abstract»CDvoid callTargetMethod()implementsimplementscalls targetMethod() \ No newline at end of file diff --git a/docs/userguide/html/domain-overview.png b/docs/userguide/html/domain-overview.png deleted file mode 100644 index e37b985d8..000000000 Binary files a/docs/userguide/html/domain-overview.png and /dev/null differ diff --git a/docs/userguide/html/domain-overview.svg b/docs/userguide/html/domain-overview.svg new file mode 100644 index 000000000..ba367a1c9 --- /dev/null +++ b/docs/userguide/html/domain-overview.svg @@ -0,0 +1 @@ +JavaType JavaParameterizedType JavaGenericArrayType JavaWildcardType JavaTypeVariable «Collection<JavaClass>»JavaClasses JavaPackage JavaClass JavaMember JavaField JavaCodeUnit JavaParameter JavaMethod JavaConstructor JavaStaticInitializer JavaAnnotation<OWNER>«List<ThrowsDeclaration<LOCATION>»ThrowsClause<LOCATION>ThrowsDeclaration ReferencedClassObject InstanceofCheck TryCatchBlock JavaAccess<TARGET extendsAccessTarget>JavaFieldAccess JavaCodeUnitAccess<T extendsCodeUnitAccessTarget>JavaCodeUnitReference<T extendsCodeUnitReferenceTarget>JavaMethodReference JavaConstructorReference JavaCall<T extendsCodeUnitCallTarget>JavaMethodCall JavaConstructorCall containshas1..*has0..*has0..*has0..*has0..*has0..*has0..*has0..*has0..*has1has0..*has0..*has0..*T =FieldAccessTargetT =MethodCallTargetT=ConstructorCallTargetT=MethodReferenceTargetT=ConstructorReferenceTarget \ No newline at end of file diff --git a/docs/userguide/html/dowalil-example.png b/docs/userguide/html/dowalil-example.png deleted file mode 100644 index b9838013a..000000000 Binary files a/docs/userguide/html/dowalil-example.png and /dev/null differ diff --git a/docs/userguide/html/dowalil-example.svg b/docs/userguide/html/dowalil-example.svg new file mode 100644 index 000000000..4fd483b1c --- /dev/null +++ b/docs/userguide/html/dowalil-example.svg @@ -0,0 +1 @@ +One RV(0.25)Two RV(0.66)«visible»Element One«hidden»Element Two«hidden»Element Three«hidden»Element Four«visible»Element Five«visible»Element Six«hidden»Element Seven ARV 0.46 GRV 0.43 \ No newline at end of file diff --git a/docs/userguide/html/import-vs-lang.png b/docs/userguide/html/import-vs-lang.png deleted file mode 100644 index 62a5558b6..000000000 Binary files a/docs/userguide/html/import-vs-lang.png and /dev/null differ diff --git a/docs/userguide/html/import-vs-lang.svg b/docs/userguide/html/import-vs-lang.svg new file mode 100644 index 000000000..f64b2561c --- /dev/null +++ b/docs/userguide/html/import-vs-lang.svg @@ -0,0 +1 @@ +JavaClassesCustomObjectsArchRulecomposed of DescribedPredicate<CustomObject>and ArchCondition<CustomObject>transformpassed to \ No newline at end of file diff --git a/docs/userguide/html/inheritance-access-check.png b/docs/userguide/html/inheritance-access-check.png deleted file mode 100644 index 2faf247fd..000000000 Binary files a/docs/userguide/html/inheritance-access-check.png and /dev/null differ diff --git a/docs/userguide/html/inheritance-access-check.svg b/docs/userguide/html/inheritance-access-check.svg new file mode 100644 index 000000000..2859092da --- /dev/null +++ b/docs/userguide/html/inheritance-access-check.svg @@ -0,0 +1 @@ +com.myapp.persistencecom.myapp.somewhereelseValidPersistenceUserIllegalPersistenceUserEntityManagerAccessor resides in wrong package \ No newline at end of file diff --git a/docs/userguide/html/inheritance-annotation-check.png b/docs/userguide/html/inheritance-annotation-check.png deleted file mode 100644 index 40f0cb110..000000000 Binary files a/docs/userguide/html/inheritance-annotation-check.png and /dev/null differ diff --git a/docs/userguide/html/inheritance-annotation-check.svg b/docs/userguide/html/inheritance-annotation-check.svg new file mode 100644 index 000000000..c73c3f332 --- /dev/null +++ b/docs/userguide/html/inheritance-annotation-check.svg @@ -0,0 +1 @@ +«@Transactional»ValidPersistenceUser«not transactional»IllegalPersistenceUserEntityManagerAccessor is not annotated with @Transactional \ No newline at end of file diff --git a/docs/userguide/html/inheritance-naming-check.png b/docs/userguide/html/inheritance-naming-check.png deleted file mode 100644 index ffe3ae304..000000000 Binary files a/docs/userguide/html/inheritance-naming-check.png and /dev/null differ diff --git a/docs/userguide/html/inheritance-naming-check.svg b/docs/userguide/html/inheritance-naming-check.svg new file mode 100644 index 000000000..1c6a10f72 --- /dev/null +++ b/docs/userguide/html/inheritance-naming-check.svg @@ -0,0 +1 @@ +«interface»Connection«concrete»HtmlConnection«concrete»FtpConnection«concrete»SshThingHas wrong name \ No newline at end of file diff --git a/docs/userguide/html/lakos-example.png b/docs/userguide/html/lakos-example.png deleted file mode 100644 index 2c2f7064e..000000000 Binary files a/docs/userguide/html/lakos-example.png and /dev/null differ diff --git a/docs/userguide/html/lakos-example.svg b/docs/userguide/html/lakos-example.svg new file mode 100644 index 000000000..50e89e82b --- /dev/null +++ b/docs/userguide/html/lakos-example.svg @@ -0,0 +1 @@ +Component OneDependsOn: 5Component TwoDependsOn: 4Component ThreeDependsOn: 5Component FourDependsOn: 1Component FiveDependsOn: 2Component SixDependsOn: 1 CCD  18 ACD  3.0 RACD 0.5 NCCD 1.29 \ No newline at end of file diff --git a/docs/userguide/html/layer-check.png b/docs/userguide/html/layer-check.png deleted file mode 100644 index 16582914d..000000000 Binary files a/docs/userguide/html/layer-check.png and /dev/null differ diff --git a/docs/userguide/html/layer-check.svg b/docs/userguide/html/layer-check.svg new file mode 100644 index 000000000..bfadb5c28 --- /dev/null +++ b/docs/userguide/html/layer-check.svg @@ -0,0 +1 @@ +com.myapp.controllercom.myapp.servicecom.myapp.persistenceSomeControllerOneSomeControllerTwoSomeServiceOneSomeServiceTwoSomePersistenceManagerAccess bypasses layersAccess goes against layersAccess goes against layers \ No newline at end of file diff --git a/docs/userguide/html/martin-example.png b/docs/userguide/html/martin-example.png deleted file mode 100644 index 41818dd04..000000000 Binary files a/docs/userguide/html/martin-example.png and /dev/null differ diff --git a/docs/userguide/html/martin-example.svg b/docs/userguide/html/martin-example.svg new file mode 100644 index 000000000..ab7e150aa --- /dev/null +++ b/docs/userguide/html/martin-example.svg @@ -0,0 +1 @@ +Component OneCe: 1Ca: 0I: 1.0A: 0.33D: 0.33Component TwoCe: 3Ca: 2I: 0.6A: 0.5D: 0.1Component ThreeCe: 1Ca: 0I: 1.0A: 0.0D: 0.0Component FourCe: 0Ca: 1I: 0.0A: 0.0D: 1.0Component FiveCe: 1Ca: 1I: 0.5A: 0.66D: 0.16Component SixCe: 0Ca: 2I: 0.0A: 0.0D: 1.0 \ No newline at end of file diff --git a/docs/userguide/html/onion-architecture-check.png b/docs/userguide/html/onion-architecture-check.png deleted file mode 100644 index f9732eca0..000000000 Binary files a/docs/userguide/html/onion-architecture-check.png and /dev/null differ diff --git a/docs/userguide/html/onion-architecture-check.svg b/docs/userguide/html/onion-architecture-check.svg new file mode 100644 index 000000000..fe3afe260 --- /dev/null +++ b/docs/userguide/html/onion-architecture-check.svg @@ -0,0 +1 @@ +com.myapp.domainmodelservicecom.myapp.applicationcom.myapp.adapterclipersistencerestDomainModelDomainServiceDomainRepositoryApplicationConfigurationCliNoSqlRepositoryRestControllerthe domain modelmust be independentthe domain must not knowabout any driving adaptersthe domain must not know aboutspecific technical infrastructureapplication services must notknow about any adaptersone adapter must not knowabout any other adapter \ No newline at end of file diff --git a/docs/userguide/html/package-deps-no-access.png b/docs/userguide/html/package-deps-no-access.png deleted file mode 100644 index 5b8455ee2..000000000 Binary files a/docs/userguide/html/package-deps-no-access.png and /dev/null differ diff --git a/docs/userguide/html/package-deps-no-access.svg b/docs/userguide/html/package-deps-no-access.svg new file mode 100644 index 000000000..7d83da96b --- /dev/null +++ b/docs/userguide/html/package-deps-no-access.svg @@ -0,0 +1 @@ +sourcetargetfooallowedforbidden \ No newline at end of file diff --git a/docs/userguide/html/package-deps-only-access.png b/docs/userguide/html/package-deps-only-access.png deleted file mode 100644 index 44ce2f1e0..000000000 Binary files a/docs/userguide/html/package-deps-only-access.png and /dev/null differ diff --git a/docs/userguide/html/package-deps-only-access.svg b/docs/userguide/html/package-deps-only-access.svg new file mode 100644 index 000000000..76e3eddc9 --- /dev/null +++ b/docs/userguide/html/package-deps-only-access.svg @@ -0,0 +1 @@ +source.onesource.twofoosource.anyallowedallowedforbiddenforbidden \ No newline at end of file diff --git a/docs/userguide/html/resolution-example.png b/docs/userguide/html/resolution-example.png deleted file mode 100644 index 693465152..000000000 Binary files a/docs/userguide/html/resolution-example.png and /dev/null differ diff --git a/docs/userguide/html/resolution-example.svg b/docs/userguide/html/resolution-example.svg new file mode 100644 index 000000000..a13d59658 --- /dev/null +++ b/docs/userguide/html/resolution-example.svg @@ -0,0 +1 @@ +ClassAccessingvoid accessField()ClassBeingAccessedSuperclassBeingAccessedObject accessedField \ No newline at end of file diff --git a/docs/userguide/html/resolution-overview.png b/docs/userguide/html/resolution-overview.png deleted file mode 100644 index 912f69f19..000000000 Binary files a/docs/userguide/html/resolution-overview.png and /dev/null differ diff --git a/docs/userguide/html/resolution-overview.svg b/docs/userguide/html/resolution-overview.svg new file mode 100644 index 000000000..07ee7f924 --- /dev/null +++ b/docs/userguide/html/resolution-overview.svg @@ -0,0 +1 @@ +JavaFieldAccessFieldAccessTargetJavaFieldJavaMethodCallMethodCallTargetJavaMethodJavaConstructorCallConstructorCallTargetJavaConstructorhas11resolves to10..1has11resolves to10..*has11resolves to10..1 \ No newline at end of file diff --git a/docs/userguide/html/simple-plantuml-archrule-example.png b/docs/userguide/html/simple-plantuml-archrule-example.png deleted file mode 100644 index f44c687da..000000000 Binary files a/docs/userguide/html/simple-plantuml-archrule-example.png and /dev/null differ diff --git a/docs/userguide/html/simple-plantuml-archrule-example.svg b/docs/userguide/html/simple-plantuml-archrule-example.svg new file mode 100644 index 000000000..b6659bed1 --- /dev/null +++ b/docs/userguide/html/simple-plantuml-archrule-example.svg @@ -0,0 +1 @@ +«..some.source..»Some Source«..some.target..»Some Target \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 293f75b55..4c0310fa8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.parallel=true archunit.group=com.tngtech.archunit -archunit.version=1.3.0-SNAPSHOT +archunit.version=1.3.0 org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED